当我尝试使用WHERE子句从SQLite中检索多行时,我只得到第一行......即:mCursor.getCount()
总是返回1 ...
有没有办法通过使用WHERE子句从表中检索多行?
这是我到目前为止所尝试的
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();
}
答案 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>