使用where子句Android从sqlite中检索多行

时间:2015-06-15 07:18:46

标签: android sqlite

当我尝试使用WHERE子句从SQLite中检索多行时,我只得到第一行......即:mCursor.getCount()总是返回1 ... 有没有办法通过使用WHERE子句从表中检索多行? 这是我到目前为止所尝试的ScreenShot

myPath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    String query= "SELECT * FROM location where emirate='"+s+"'";
    Cursor mCursor = myDataBase.rawQuery(query, null);
    int i= mCursor.getCount();
    if (i>0) {
           mCursor.moveToFirst();
           shoplist.add(mCursor.getString(1));
        }
        mCursor.close();
        myDataBase.close();
    }

3 个答案:

答案 0 :(得分:2)

SQLiteDatabase db = this.getWritableDatabase();
String query= "SELECT * FROM location where emirate='"+s+"'";
Cursor cursor1= db .rawQuery(query, null);


// Added by koutukto store offline record
while (cursor1.moveToNext()) {

    String data3 =cursor1.getString(cursor1.getColumnIndex("coloumname"));
    shoplist.add(data3 );

}
db.close();

答案 1 :(得分:2)

您的情况仅检索 1条记录 如果您有多个记录,其中Emirate ='Qatar',则仅检索第一个记录,因为 = 条件已满足。

您需要使用 LIKE 运算符代替 = ,才能全部获取。

将您的查询替换为:

String query= "SELECT * FROM Location WHERE Emirate LIKE '%" + s + "%'";

答案 2 :(得分:0)

myPath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    String query= "SELECT * FROM location where emirate='"+s+"'";
    Cursor mCursor = myDataBase.rawQuery(query, null);
    int i= mCursor.getCount();

       if(mCursor.moveToFirst())

           do{

           shoplist.add(mCursor.getString(1));

           }while(mCursor.moveToNext());

        }

        mCursor.close();
        myDataBase.close();

您可以通过mCursor.moveToFirst()检查现有行匹配查询。这个方法为你做两件事;
1。将光标移动到第一行
2。如果移动成功则返回true,表示如果此方法返回true,则至少有一行作为结果,您可以继续工作。
您可以使用mCursor.moveToNext()一段时间检索记录。 / p>