2015-06-15 2 views
-1

Когда я пытаюсь извлечь несколько строк из SQLite с помощью предложения WHERE, я получаю только первую строку ... т.е.: mCursor.getCount() возвращает 1 всегда ...
Есть ли любой способ получить несколько строк из таблицы с помощью предложения WHERE?
Это то, что я пытался до сих пор ScreenShotИзвлеките несколько строк из sqlite, используя предложение where Android

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

Вы зарегистрировали значение mCursor.getCount()? –

+0

Я попытался просмотреть его с помощью контрольных точек ... и он возвращает 1 всегда ... –

+0

** Конечно ** вы не получите все перечисленные записи. Вы ** не едете на велосипеде ** по результатам. Вы также получаете колонку ** 2nd **, а не первую (они основаны на ** 0 **). И у вас нет гарантий **, который ** будет вторым столбцом при следующем выполнении запроса, так как ** столбцы не входят в конкретный порядок **. –

ответ

2

Ваше состояние получает 1 запись только.
Если у вас есть несколько записей, в которых Emirate = 'Qatar', возвращается только первый, потому что условие = выполнено.

Вы должны использовать оператор в LIKE вместо =, чтобы получить их все.

Заменить запрос с:

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

это я искал ... Спасибо большое ... :) –

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(); 
+0

Извините и спасибо – koutuk

+0

Я сказал: am getmCursor.getCount() = 1 .. –

+2

Для этого вам нужно проверить местоположение таблицы файла db ...., содержащее более одной записи для при условии, где статья – koutuk

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().

Смежные вопросы