具有多个选择的Android数据库查询

时间:2014-09-02 22:29:55

标签: android android-sqlite

我知道如何使用以下内容查询单个选择:

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)。我怎么写这个?谢谢!

2 个答案:

答案 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 []而不是猜测名称的数量。 将整个事物用双引号括起来,单引号中的单个名称以逗号分隔。