java - 了解 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.");
                        }
                    }

当我提供有效数据时,更新就会生效。但是,当我向其提供无效数据(数据库中没有的名称)时,我没有收到适当的错误消息。

最佳答案

来自fine manual :

Returns
the number of rows affected

所以db.update当没有更新任何内容时(即您的 where 与任何行都不匹配),将返回 0,并且 updateContact 将返回零。所以你可能想重命名 idnumberUpdated (或类似)并在 numberUpdated <= 0 上显示错误而不是寻找 -1 .

关于java - 了解 sqlite 上的更新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989776/

相关文章:

java - Gradle 任务 --help 打印到控制台而不是我的应用程序执行

java - android 在运行时替换方法调用

java - 如何将 getDuration 放入 TextView 中?

c++ - 锁定sqlite3 db以进行文件下载

java - 如何在 Android 中使用 SQLite 从微调器中根据选定的月份和年份从列中获取值?

java - 如何在 Spring 框架中检查其他用户 session 是否活跃

java - GWT-GIN 与 Raw Guice

iphone - 以编程方式将 SQLite 数据导出到 iOS 中的 Excel

java - 数字第二次小于 100

Android 模拟器跨网络联网