#java #android #sqlite
#java #Android #sqlite
Вопрос:
У меня возникли некоторые трудности с пониманием команды обновления для 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.");
}
}
Обновление работает, когда я предоставляю ему действительные данные. Но когда я даю ему недопустимые данные (имя, которого нет в базе данных), я не получаю соответствующее сообщение об ошибке.
Ответ №1:
Из руководства fine:
ВОЗВРАТ
количество затронутых строк
So db.update
вернет 0, когда ничего не было обновлено (т. Е. Ваши where
строки не совпадали ни с какими строками), и этот ноль будет возвращен updateContact
. Итак, вы, вероятно, хотите переименовать id
в numberUpdated
(или аналогичный) и показывать при ошибке numberUpdated <= 0
вместо поиска -1
.
Ответ №2:
Возвращаемое значение — это количество обновленных строк, а не идентификатор. Проверьте 0, а не -1. Это означает, что вы можете обновлять более одной записи, и именно так обычно работают обновления базы данных.