Понимание команды обновления на sqlite - PullRequest
0 голосов
/ 03 ноября 2011

Мне сложно понять команду обновления для SQLite.

В моем примере я выполняю обновление базы данных, но если есть ошибка, я выдаю сообщение об ошибке. Если пользователь пытается обновить несуществующую запись, я не получаю сообщение об ошибке.

Вот мой код, сначала команда обновления, а затем мой вызов:

public long updateContact(String firstName, String lastName, String address, String city, String state, 
         int zipCode, long mobileNumber, long altNumber, String email) {
    ContentValues contactInfo = new ContentValues();
    contactInfo.put(KEY_FNAME, firstName);
    contactInfo.put(KEY_LNAME, lastName);
    contactInfo.put(KEY_ADDR, address);
    contactInfo.put(KEY_CITY, city);
    contactInfo.put(KEY_STATE, state);
    contactInfo.put(KEY_ZIP, zipCode);
    contactInfo.put(KEY_MOBILE, mobileNumber);
    contactInfo.put(KEY_ALT, altNumber);
    contactInfo.put(KEY_EMAIL, email);

    String where = "FIRSTNAME = '" + firstName + "' AND LASTNAME = '" + lastName + "'";

    return db.update(DATABASE_TABLE, contactInfo, where, null);
}

Звонок:

if (searchTerm.length() > 0) {
                        id = db.updateContact(fName, lName, address.getText().toString().trim(), 
                                    city.getText().toString().trim(), state.getSelectedItem().toString().trim(), Integer.parseInt(zip.getText().toString().trim()), 
                                    Long.valueOf(mobile.getText().toString().trim()), Long.valueOf(alternate.getText().toString().trim()), 
                                    email.getText().toString().trim());
                        if (id == -1) {
                            DisplayErrorDialog("I'm sorry, we can not update the contact with the present data.");
                        }
                    }

Обновление работает, когда я даю ему действительные данные. Но когда я даю ему неверные данные (имя, которого нет в базе данных), я не получаю соответствующее сообщение об ошибке.

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Из тонкой инструкции :

Возвращает
количество затронутых строк

Таким образом, db.update вернет 0, когда ничего не было обновлено (т. Е. Ваш where не соответствует ни одной строке), и этот ноль будет возвращен updateContact. Таким образом, вы, вероятно, захотите переименовать id в numberUpdated (или подобное) и показать при ошибке на numberUpdated <= 0 вместо поиска -1.

1 голос
/ 03 ноября 2011

Возвращаемое значение - количество обновленных строк, а не идентификатор.Проверьте 0, а не -1.Это означает, что вы можете обновлять более одной записи, как обычно работают обновления базы данных.

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