1

我想检查数据库中是否存在几个值。如果是这样,则如果光标为空,该方法应返回 TRUE 或 FALSE。但问题是,尽管值不在数据库中,但它始终返回 TRUE!我错过了什么?

    // This method check if the combination image path and contact name already exists in database
public boolean checkContentDatabase(String imageFilePath, String contactName) {

    String query = "Select * from " + DB_TABLE+ " where " + TABLE_IMAGE_PATH + "='" + imageFilePath + "' and " + TABLE_CONTACT_NAME + "='" + contactName +"' ;";

    Cursor c = db.rawQuery(query, null);

    if(c != null) // Exists in database
     {
     return true;
     }
     else
     {
         return false;
     }
}
4

4 回答 4

5

将您的 if 条件替换为:

if(c.getCount() > 0)
 {
 return true;
 }
 else
 {
     return false;
 }
于 2013-03-05T08:25:22.927 回答
3

使用c != null && c.getCount() > 0而不是c != null

于 2013-03-05T08:23:26.910 回答
2
      public boolean checkContentDatabase(String imageFilePath, String contactName) {

String query = "Select * from " + DB_TABLE+ " where " + TABLE_IMAGE_PATH      + "='"          +          imageFilePath + "' and " + TABLE_CONTACT_NAME + "='" + contactName +"' ;";

Cursor c = db.rawQuery(query, null);


           c.moveToFirst();
    if(c.isAfterLast() == false) {
       return true;
      }
     else
       {
      return false;
      }
     }
于 2013-03-05T08:25:25.633 回答
1

游标不为空,因为它已成功创建。只有您的结果集不存在。尝试使用“SELECT 1 FROM ...”,然后检查结果是否等于 1。

于 2013-03-05T08:21:45.953 回答