[英]Understanding update command on 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.");
}
}
当我向其提供有效数据时,此更新正在运行。 但是,当我给它无效的数据(名称不在数据库中)时,我没有收到适当的错误消息。
从精美的手册中 :
退货
受影响的行数
所以db.update
将返回0时,没有被更新(即你的where
没有匹配的行)和零将返回updateContact
。 因此,您可能想将id
重命名为numberUpdated
(或类似名称),并在numberUpdated <= 0
显示错误,而不是寻找-1
。
返回值是更新的行数,而不是id。 检查0,而不是-1。 这意味着您可能要更新多个记录,这通常是数据库更新的工作方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.