Wiem, że istnieje polecenie SQL, które wygląda następująco: IF NOT EXISTS
, ale ponieważ klasa Androida SQLiteDatabase
ma kilka dobrych metod, zastanawiałem się, czy możliwe jest wstaw wartość, jeśli nie istnieje za pomocą metody.SQLiteDatabase: Wstaw tylko, jeśli wartość nie istnieje (nie przez surowe polecenie SQL)
Obecnie używam tego, aby wstawić String
:
public long insertString(String key, String value) {
ContentValues initialValues = new ContentValues();
initialValues.put(key, value);
return db.insert(DATABASE_TABLE, null, initialValues);
}
(. db
jest instancją SQLiteDatabase
)
Próbowałem metody insertOrThrow()
zamiast insert()
, ale wydaje się to robi tak samo jak insert()
. Oznacza to, że jeśli wartość jest już w wierszu, jest wstawiana ponownie, więc wiersz ma teraz dwie wartości o tej samej wartości.
Dlaczego nie uczynić twój klucz jest wyjątkowa? –
Możesz użyć biblioteki ORM. Użyłem ORMDroid i można wykonać wiele zapytań SQL za pomocą metod. http://ormlite.com/sqlite_java_android_orm.shtml – dannyroa