私は携帯電話から連絡先の名前を読み取り、その名前がすでにデータベースに保存されているかどうかを調べるアプリに取り組んでいます。すでにデータベースに保存されている場合は、保存されているカウンター変数を更新するだけですが、保存されていない場合は、追加を続けます。少なくともこれは私の意図です。
コードの一部は次のとおりです。
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){
で正しい基準を使用していません。これは、すべての連絡先がデータベースにすでに保存されているか、保存されていない場合でも、すべての連絡先が追加されるためです。