如何在sqlite for android的表中检查行是否存在

时间:2012-11-23 04:00:33

标签: android sqlite

我想检查数据库中是否存在一行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;
    }

但是使用这段代码会重新插入行..有人建议我采用这种方法

2 个答案:

答案 0 :(得分:2)

您的等式检查失败,因为此表达式正在评估true

if(exists=true)

如果您有一个等号,则表示分配。您要将true分配给exists,而不是将existstrue进行比较。分配的结果是exists被分配的值(true)。

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

if (exists == true)

有关此问题的详细信息,请参阅this related post

答案 1 :(得分:0)

这里的问题在于if(exists = true)。需要更改为if(exists == true)。 您还可以使用cursor.getCount()进行检查;它将返回游标中的行数