Od jakiegoś czasu próbuję zaktualizować konkretny wiersz i wygląda na to, że można to zrobić na dwa sposoby. Z tego, co przeczytałem i wypróbowałem, możesz po prostu użyć:
execSQL(String sql)
metoda
albo:
update(String table, ContentValues values, String whereClause, String[] whereArgs)
metoda.
(Daj mi znać, jeśli to jest nieprawidłowe, ponieważ jestem nowy na Androidzie i bardzo nowy w SQL).
Więc pozwól mi przejść do mojego aktualnego kodu.
myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES ('Bob', 19, 'Male')", "where _id = 1", null);
Próbuję to osiągnąć:
Zaktualizuj Field1, Field2 i Field3, gdzie klucz podstawowy (_id) jest równy 1.
Eclipse wyświetla czerwoną linię tuż pod słowem „aktualizacja” i podaje następujące wyjaśnienie:
Metoda update (String, ContentValues, String, String []) w typie SQLiteDatabase nie ma zastosowania dla argumentów (String, String, String, null)
Domyślam się, że nie przypisuję poprawnie ContentValues. Czy ktoś może wskazać mi właściwy kierunek?
myDB.update(TableName, cv, "_id=?", new String[]{id})
. SQLite automatycznie wypełni czwarty parametr w "?" w trzecim parametrze, czyli klauzuli WHERE. Jeśli trzeci parametr zawiera n „?” S, czwartym parametrem powinien być String [] o długości nProsta droga:
źródło
execSQL()
do aktualizacji nie będzie działać. Odczyt execSQL () z UPDATE nie aktualizuje się .Najpierw utwórz obiekt ContentValues :
Następnie użyj metody aktualizacji. Uwaga, trzeci argument to klauzula where. „?” jest symbolem zastępczym. Zostanie zastąpiony czwartym argumentem (id)
To najczystsze rozwiązanie do aktualizacji określonego wiersza.
źródło
Ten kod powinien naprawić twój przykład:
źródło
możesz spróbować tego ...
źródło
mam nadzieję, że to ci pomoże:
źródło
Wypróbuj tę jedną metodę aktualizacji w SQLite
źródło
użyj tego kodu w swojej bazie danych `
do aktualizacji w pliku sample.java użyj tego kodu
źródło
Możesz spróbować w ten sposób:
źródło
jeśli twój wiersz sqlite ma unikalny identyfikator lub inny równoważnik, możesz użyć klauzuli where, w ten sposób
źródło
"where _id = 1"
. Zmiana jest również odzwierciedlona w moim pytaniu.Aby uzyskać aktualizacje, należy wywołać setTransactionSuccessfull, aby zmiany zostały zatwierdzone w następujący sposób:
źródło
// Oto prosty przykładowy kod do aktualizacji
// Najpierw zadeklaruj to
// zainicjuj następujące
// kod aktualizacji
// wstaw swój identyfikator zamiast „znaku zapytania” to funkcja w moich wspólnych preferencjach.
źródło
źródło
po prostu spróbuj w ten sposób
źródło
Metoda aktualizacji w SQLite:
źródło
źródło
źródło
po prostu podaj rowId i typ danych, które będą aktualizowane w ContentValues.
public void updateStatus (String id, int status) {
SQLiteDatabase db = this.getWritableDatabase ();
ContentValues data = new ContentValues ();
data.put ("status", status);
db.update (TableName, data, "columnName" + "=" + id, null);
}
źródło
Pokażę na kompletnym przykładzie
Stwórz w ten sposób swoją bazę danych
Następnie utwórz klasę, aby ułatwić CRUD -> Utwórz | Czytaj | Aktualizuj | Usuń
Teraz jest magia
musisz utworzyć ProductsAdapter, który musi zwracać CursorAdapter
Więc w działaniu po prostu wywołaj taką funkcję
źródło