如何将SQLite数据库中的值与从手机中读取的值进行比较并仅保存新值?

时间:2014-09-17 06:24:48

标签: android sqlite

正在开发一个Android应用程序来从手机中读取联系人(姓名和号码)并将其保存在SQLite数据库中(有点像将联系人同步到我的应用程序,实际上并非如此)。我已经阅读并保存了手机中的联系人。

现在我想添加安装该应用后添加到手机中的新联系人。因此,我打算做的是从手机中读取所有联系人,并将其与数据库中已保存的联系人进行比较。它通过比较数字来完成(通过检查数据库中的读数和数字是否相同)。如果在数据库中找不到来自电话的读取号码,我想将该号码及其特定联系人姓名保存到数据库中。以下代码是这样做的。

public int checkContacts(String name, String number) {  // name and number are read from phone
    String query = "select name,number from contacts";
    cur = db1.rawQuery(query, null);  // cur is object of Cursor
    while(cur.moveToNext())
    {
        array.add(cur.getString(1));  // array is object of ArrayList<String>
        if( !(number.equals(array)))
        {
            insertContacts(name, number);  // function to insert to database
            count++;   // count is used to get the number of contacts saved
        }
    }
    return count;
}

使用Eclipse和Android Emulator开发此应用程序。执行此代码后,大约20000多个联系人被保存到我的数据库中。实际上我的模拟器中只有11个联系人。

为什么这么多联系人被添加到我的数据库中?如何才将新添加的联系人添加到数据库?

2 个答案:

答案 0 :(得分:1)

尝试使用ArrayList的contains方法检查数组列表中的值,如下所示: contains方法在ArrayList中搜索指定的对象。

  if(!array.contains(number))

答案 1 :(得分:0)

(number.equals(array)) =>  always return false