我正在开发一个从手机读取联系人姓名并检查姓名是否已保存在数据库中的应用程序。如果它已经保存到数据库中,那么我只需更新一个保存的计数器变量,但如果不是,那么我继续添加它。至少这是我的意图。
部分代码如下:
public Integer countRecords(String name) {
SQLiteDatabase db = events.getReadableDatabase();
Cursor mCount= db.rawQuery("select count('"+CONTACT_NAME+"') from'"+ TABLE_NAME + "' where '" + CONTACT_NAME + "' = '" + name + "'", null);
mCount.moveToFirst();
Integer count= mCount.getInt(0);
startManagingCursor(mCount);
return count;
}
在代码的主体部分如下:
ContentResolver cr= getContentResolver();
Cursor cu= cr.query(URI, null, null, null, null);
if(cu.getCount()>0){
while(cu.moveToNext()){
contactName=cu.getString(cu.getColumnIndex(DNAME));
Integer rawValue = countRecords(contactName);
if(rawValue==0){
addRecord(contactName);
addedCounter+=1;
recordName=cu.getString(cu.getColumnIndex(DNAME));
recordInfo = addedCounter + " " + recordName + "\n";
recordsList+= recordInfo;
}
else{
savedCounter+=1;
}
}
现在,我已经尝试了我所知道的一切。问题似乎是过程的返回值countRecords
。也许我没有在 IF 子句中使用正确的标准if(rawValue==0){
,因为它要么添加所有联系人,即使它们已经保存在数据库中,或者它没有。