我尝试使用id = x查询并仅获取一个数据。

我的method是:

public Cursor getDataWithId(String id) {
  SQLiteDatabase db = this.getWritableDatabase();
  Cursor res = db.rawQuery("select * from urun_table where ID = "+id,null);
  return res;
}


我做错了吗?因为我认为,我无法正确理解selectionArgs

谢谢。

最佳答案

您可以使用如下形式:

String TABLE_URUN = "urun_table";
String KEY_ID = "ID";

public Cursor getDataWithId(String id) {
  SQLiteDatabase db = this.getWritableDatabase();
  String query = String.format("SELECT * FROM %s WHERE %s = ?", TABLE_URUN, KEY_ID);
  Cursor res = db.rawQuery(query, new String[]{id});
  return res;
}


rawQuery() documentation中所示:


selectionArgs字符串:您可以在查询的where子句中包含?s,
它将被selectionArgs中的值替换。价值
将绑定为字符串。


因此,如果您想对以下内容使用多个选择:

SELECT * FROM TABLE WHERE KEY_ID = id AND KEY_OTHER = otherValue


您只需要添加多个“?”和selectionArgs参数中的字符串:

String KEY_OTHER = "other";

public Cursor getDataWithId(String id, String other) {
  String query = String.format("SELECT * FROM %s WHERE %s = ? AND %s = ?", TABLE_URUN, KEY_ID, KEY_OTHER);
  Cursor res = db.rawQuery(query, new String[]{id, other});
  return res;
}

09-04 14:28