我知道如何使用以下内容查询单个选择:
Cursor cursor = database.query(true, TABLE, COLUMNS, "name = ?", new String[]{"Bob"},null,null,null,null);
但是假设我想要创建如下函数:
public Cursor queryNames(String[] names)
其中函数返回一个游标,其中name = names [0]或name = names [1] ...等等,例如,如果我调用函数queryNames(new String [] {“Alice”,“ Bob“,”Charlie“}),该函数应该返回一个光标,其中名称是三个中的任何一个(Alice,Bob或Charlie)。我怎么写这个?谢谢!
答案 0 :(得分:1)
您的方法可能看起来像这样:
public Cursor queryNames(String[] names) {
SQLiteDatabase mDb = this.getReadableDatabase();
String whereStatement = "";
for(int i = 0; i < names.length; i++) {
if (i != (names.length - 1))
whereStatement = whereStatement + "name = ? OR "
else
whereStatement = whereStatement + "name = ?"
Cursor cursor = mDb.query(true, TABLE, COLUMNS, whereStatement, names, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
mDb.close();
return cursor;
}
希望这有帮助!
答案 1 :(得分:0)
尝试:
Cursor cursor = db.query(true, TABLE, COLUMNS, "name IN (?)", new String[]{" 'moe', 'larry', 'curly'"}, null, null, null, null);
最好分别构建String []而不是猜测名称的数量。 将整个事物用双引号括起来,单引号中的单个名称以逗号分隔。