繁体   English   中英

了解sqlite上的更新命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM