Android检查行中的类似数据

时间:2014-12-20 02:46:22

标签: android sqlite

我正在尝试检查我的数据库中的字段是否已经存在并且这样做我在我的DBAdapter中使用此方法来执行此操作。我不确定这是最好的解决方案。

public Cursor getRowByName(String rowId) {
    String where = KEY_ACT + "=" + rowId;
    Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, where, null, null,
            null, null, null);
    if (c != null) {
        c.moveToFirst();
    }
    return c;
}

然后,当我点击我的按钮时,我会这样做:

Cursor data = myDb.getRowByName(item);
            if(cursor.moveToFirst()) {
                Toast toast = Toast.makeText(getApplicationContext(),"It Exists", Toast.LENGTH_SHORT);
                toast.show();
            }
            else {
                Toast toast = Toast.makeText(getApplicationContext(),"It dosent exist", Toast.LENGTH_SHORT);
                toast.show();
            }

我的'项目'是我要检查的字符串。 无法找出我做错了什么,但我对android有点新意,所以如果你们能给我一个暗示我会擅长很多:) 谢谢!

3 个答案:

答案 0 :(得分:0)

使用Cursor.getCount()检查来自查询的游标结果的结果数:

Cursor data = myDb.getRowByName(item);
 if(cursor.getCount()>0) {
   // record found in db
  }
  else { 
   // record not found in db                
   }

答案 1 :(得分:0)

使用whereArgs的正确方法:

db.query(true, DATABASE_TABLE, ALL_KEYS, KEY_ACT + "= ?", new String[]{rowId},
    null, null, null, null);

答案 2 :(得分:0)

我终于成功了,我就像你们建议的那样做了它并且它正在发挥作用。

我的DBAdapter方法:

public Cursor getRowByName(String name){

String where = KEY_ACT + "=" + name;
Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, KEY_ACT + "= ?", new String[{name},
        null, null, null, null);
if (c != null) {
    c.moveToFirst();
}
return c;

}

我的班级:

Cursor data = myDb.getRowByName(item);
                if(data.moveToFirst()) {
                    Toast toast = Toast.makeText(getApplicationContext(),"It EXISTS", Toast.LENGTH_SHORT);
                    toast.show();
                }
                else {
                    Toast toast = Toast.makeText(getApplicationContext(),"It dosent", Toast.LENGTH_SHORT);
                    toast.show();

                    long newId = myDb.insertRow( timerValue.getText().toString(), item);
                    Cursor cursor = myDb.getRow(newId);
                    displayRecordSet(cursor);
                }

谢谢你@tachyonflux,我认为这是我问题的一部分:)谢谢你@ρяσѕρєяK的帮助!