Как обновить несколько столбцов одной строки в SQLite?

На данный момент у меня есть таблица только с одной строкой, и я хочу обновить какой-то столбец этой строки. метод вставки выполняется правильно, в то время как обновление возвращает идентификатор = 0, а печать имени пользователя всегда является предыдущей и не обновляется.

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table "+TABLE_NAME1+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, USERNAME TEXT, WON INT, DRAW INT, LOST INT, CELLSNUMBER INT,RESULT INT)");        
}
public boolean addUserInformation(String name, int w, int l, int d, boolean firstTime){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();

        values.put(USERNAME, name);
        values.put(WIN, w);
        values.put(LOST, l);
        values.put(DRAW, d);

        long id = 0;
        if (firstTime == true ) {
            id = db.insert(TABLE_NAME1, null, values);
        }
        if (firstTime == false){
            id=db.update(TABLE_NAME1, values, "USERNAME = ? and WON = ? and DRAW = ?  and LOST = ?",new String[] {
                    name,
                    String.valueOf(w),
                    String.valueOf(d),
                    String.valueOf(l)
            });
        }
        if (id == -1)
            return false;
        else
            return true;
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
416
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы хотите обновить строку с помощью USERNAME = name со значениями w, d, l.
Третий аргумент метода update() — это предложение WHERE, и в нем вы должны иметь только:

USERNAME = ?

так что делай так:

id = db.update(TABLE_NAME1, values, "USERNAME = ?", new String[] {name});

Значения w, d, l не обязательно должны находиться внутри предложения WHERE. Они сохраняются в переменной values и будут обновлять строку в таблице.

Другие вопросы по теме