Обновление SQLite - PullRequest
       3

Обновление SQLite

0 голосов
/ 30 апреля 2018

Я прочитал много-много документов и не знаю, почему мой код не работает. Я хочу обновить свою таблицу, и это мой код:

public boolean updateSetting(int id, String cordinates, String ip, String port, String message, String sendTime) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    try {
        //contentValues.put(clmKeyId,0);
        if (cordinates!=null) {
            contentValues.put(clmCordinates, cordinates);
        }
        contentValues.put(clmIp, ip);
        contentValues.put(clmPort, port);
        contentValues.put(clmDeviceMessage, message);
        contentValues.put(clmSendTime, sendTime);
    } catch (Exception e) {
        e.printStackTrace();
    }
    int checkUpdate = db.update(tblSetting, contentValues,clmSettingKeyId + " = "+ id,null);

    db.close();
        return checkUpdate>0;
    }

и это мой метод вызова:

    DataBaseHelper dataBaseHelper = new DataBaseHelper(this);
        boolean value = dataBaseHelper.updateSetting(0, cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());
        if (value)
            //doSomthing
}

но мой метод update Setting всегда возвращает 0. Пожалуйста, помогите мне.

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Я предоставляю изменение кода в соответствии с вашим ключом и значениями.

Ниже этого кода обновите данные заметки в моей базе данных.

public void updateNote(NoteData noteData, int id) {
    SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy h:mm a");
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put("date", sdf.format(new Date(noteData.getDatetime())));
    contentValues.put("note", noteData.getNote());
    String selection = "id=" + id;
    int count = db.update(
            NOTE_TABLE_NAME,
            contentValues,
            selection,
            null);
    db.close();
}
0 голосов
/ 01 мая 2018

Ваша проблема в том, что вы передаете 0 в качестве id , используемого для идентификации строки, подлежащей обновлению. Предполагая, что вы используете типичное использование столбца с именем id (т.е. это псевдоним столбца rowid и определяется как id INTEGER PRIMARY KEY (с ключевым словом AUTOINCREMENT или без него)), тогда id не будет 0 . Первый назначенный id будет 1 , затем вероятно 2 , а затем вероятно 3 при вставке новых строк .....

Таким образом, вы получите 0, так как нет строк для обновления из-за предложения WHERE ОБНОВЛЕНИЯ.

Если вы изменили 0 на 1 , вполне вероятно, что обновление сработает (опять-таки, при условии обычного использования столбца id и что строки не были удалены), поэтому возможно попробуйте: -

dataBaseHelper.updateSetting(1, cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());

В идеале вам необходимо точно определить, какую строку необходимо обновить (т.е. получить действительный id , возможно, через список, представленный пользователю).

0 голосов
/ 30 апреля 2018

Я думаю, вы каждый раз получаете 0 из-за строки ниже: -

dataBaseHelper.updateSetting(0, cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());

Пожалуйста, сделайте ваш идентификатор для Autoincrement в tblSetting . и затем замените указанную выше строку на следующую: -

dataBaseHelper.updateSetting(cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());

Ваш идентификатор будет автоматически получен, и вам не нужно давать его вручную.

Пожалуйста, попробуйте, это может вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...