我在理解 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.");
}
}
当我提供有效数据时,更新就会生效。但是,当我向其提供无效数据(数据库中没有的名称)时,我没有收到适当的错误消息。
最佳答案
来自fine manual :
Returns
the number of rows affected
所以db.update
当没有更新任何内容时(即您的 where
与任何行都不匹配),将返回 0,并且 updateContact
将返回零。所以你可能想重命名 id
至numberUpdated
(或类似)并在 numberUpdated <= 0
上显示错误而不是寻找 -1
.
关于java - 了解 sqlite 上的更新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989776/