Кто-нибудь может заглянуть в мой курсор запросов AndroidSQLite? - PullRequest
0 голосов
/ 08 февраля 2019
      Cursor cursor = db.rawQuery("SELECT * FROM fruits",null);

работает, но как только я начинаю добавлять ограничения, такие как:

      cursor = db.rawQuery("SELECT fruitName, color, 
       number FROM fruits WHERE color LIKE '%re%' AND fruitName LIKE 
      '%ppl%' AND number >=" + 5, null); 


       String[] fString = {"fruitName","color","number"};
        int[] tString = {R.id.fruit,R.id.color,R.id.number};

Затем я получаю сообщение об ошибке здесь:

           ListAdapter adapter = new SimpleCursorAdapter(
            this,R.layout.newLayOutForSQL,cursor,
            fString,tString,0);

Я пытался выбрать SELECT * FROM fruits in db.rawQuery и он работает отлично, но ограничение не работает

           SQLiteDatabase db;

дБ настроен правильно, поэтому не стоит беспокоиться

      cursor = db.rawQuery("SELECT fruitName, color, 
       number FROM fruits WHERE color LIKE '%re%' AND fruitName LIKE 
      '%ppl%' AND number >=" + 5, null); 


       String[] fString = {"fruitName","color","number"};
        int[] tString = {R.id.fruit,R.id.color,R.id.number};


           ListAdapter adapter = new SimpleCursorAdapter(
            this,R.layout.newLayOutForSQL,cursor,
            fString,tString,0);

Ожидается: отображение результатов с ограничениями фактические результаты: ошибка

1 Ответ

0 голосов
/ 08 февраля 2019

Причина, по которой вы получаете ошибки, заключается в том, что, не указывая *, вы исключаете столбец _id , который требуется для CursorAdapters.

Согласно: -

Курсор должен включать столбец с именем _id, иначе этот класс не будет работать.Кроме того, использование MergeCursor с этим классом не будет работать, если объединенные курсоры имеют перекрывающиеся значения в своих столбцах «_id».[CursorAdapter] (https://developer.android.com/reference/android/widget/CursorAdapter) ( SimpleCursorAdapter является косвенным подклассом CursorAdapter )

Попробуйте: -

cursor = db.rawQuery("SELECT _id, fruitName, color,
   number FROM fruits WHERE color LIKE '%re%' AND fruitName LIKE 
  '%ppl%' AND number >=" + 5, null); 

Или: -

cursor = db.rawQuery("SELECT * 
   FROM fruits WHERE color LIKE '%re%' AND fruitName LIKE 
  '%ppl%' AND number >=" + 5, null);
...