0

我想检查sqlite表的一行是否存在于数据库中。如果行存在,我应该调用一个类,否则调用另一个类。要获得我正在使用的这个功能

  public boolean Exists(int position) {

       SQLiteDatabase db =  (placeData).getReadableDatabase();
        Cursor cursor = db.rawQuery("select * from pages where bbookid ='"+ position +"'", null);

       boolean exists = (cursor.getColumnName(position)) != null;
       Log.i("logs","fads");
       if(exists=true)
       {
           getDataAndPopulate();
       }
       else
       {
       Log.i("qefw","cursors");
       new LoadAllProducts().execute();
       }
       cursor.close();
       return exists;
    }

但是使用此代码,行正在重新插入..有人可以建议我使用该功能的方法吗

4

2 回答 2

2

您的相等性检查失败,因为此表达式的计算结果为true

if(exists=true)

当你有一个等号时,它意味着assignment。您分配true给,而exists不是比较。赋值的结果是被赋值的值( )。existstrueexiststrue

请尝试使用正确的相等运算符:

if (exists == true)

有关此问题的另一种看法,请参阅此相关帖子

于 2012-11-23T04:07:45.233 回答
0

问题出在 if(exists=true) 中。需要更改为 if (exists == true)。您也可以使用 cursor.getCount(); 它将返回游标中的行数

于 2012-11-23T09:14:38.247 回答