2015-03-12 2 views
-1

Я хочу получить данные из базы данных. Идентификатор ресторана должен быть отсортирован в порядке возрастания, я попытался получить данные с помощью запроса. Кто-то пожалуйста, помогите мне, я действительно не могу найти, что не такОшибка при получении данных из Sqlite

Cursor cursor = db.rawQuery("SELECT " + key_id_cart + " as _id, " 
      +" ORDER BY "+ restaurant_ID + " DESC"+", " + restaurant_name + ", " 
      + restaurant_thumbnail + ", " + dishname + ", " + dish_image 
      + ", " + AreaId + ", " + ItemChoiceIds + ", " + ItemChoiceQty 
      + ", " + ItemId + ", " + Quantity + " from " 
      + tablenameCartData, new String[] {}); 

Проблема заключается в том, что возвращает исключение следующим

android.database.sqlite.SQLiteException: near "ORDER": syntax error (code 1): , while compiling: SELECT key_id_cart as _id, ORDER BY restaurant_ID DESC, restaurant_name, restaurant_thumbnail, dishname, dish_image, AreaId, ItemChoiceIds, ItemChoiceQty, ItemId, Quantity from tablenameCartData 

ответ

3

изменение ваш запрос к следующему Order by всегда должны прийти к концу запроса он дает эту ошибку из-за , она становится до того order by

Cursor cursor = db.rawQuery("SELECT " + key_id_cart + " as _id," 
      + restaurant_name + ", " + restaurant_ID + "as res_id," 
      + restaurant_thumbnail + ", " + dishname + ", " + dish_image 
      + ", " + AreaId + ", " + ItemChoiceIds + ", " + ItemChoiceQty 
      + ", " + ItemId + ", " + Quantity + " from " 
      + tablenameCartData + " ORDER BY res_id DESC", new String[] {}); 
+0

Я попробовал этот код теперь я получаю исключение, как .................... java.lang.IllegalStateException: Не удалось прочитать строку 0, col -1 из CursorWindow. Перед доступом к данным убедитесь, что курсор инициализирован правильно. – Geethu

+0

Я думаю, что есть проблема с запросом, убедитесь, что все столбцы, которые вы написали в запросе, соответствуют структуре таблицы. Эта ошибка обычно возникает, когда указанный столбец не существует в таблице. – eLemEnt

+0

@ Эти исключения произошли при попытке получить примитивные значения (int, long) из Cursor. Поэтому, если вы попытаетесь прочитать значение, которое может быть null/empty, поэтому курсор выбрасывает этот вид исключения. Решение для этого исключения - вы всегда должны добавлять значения по умолчанию к примитивным столбцам с нулевым значением в точке создания. – eLemEnt

2

Добавить ORDER BY после tablenameCartData имени или в конце запроса на выборку, как:

Cursor cursor = db.rawQuery("SELECT " + key_id_cart + " as _id, " 
      + restaurant_ID + " "+", " + restaurant_name + ", " 
      + restaurant_thumbnail + ", " + dishname + ", " + dish_image 
      + ", " + AreaId + ", " + ItemChoiceIds + ", " + ItemChoiceQty 
      + ", " + ItemId + ", " + Quantity + " from " 
      + tablenameCartData+" ORDER BY <COLUMN_NAME> DESC", new String[] {}); 

Где COLUMN_NAME это имя столбца, по которому хотите заказать ответ на запрос

1

Синтаксис неправильно в запросе SQL:

Правильный синтаксис:

ВЫБРАТЬ колонного список

FROM table_name

[WHERE условие]

[ORDER BY COLUMN1, COLUMN2, .. columnN] [ASC | По убыванию];

Код должен быть: Cursor cursor = db.rawQuery("SELECT " + key_id_cart + "as _id"+ " from " + tablenameCartData + " ORDER BY "+ restaurant_ID + " DESC"+", " + restaurant_name + ", " + restaurant_thumbnail + ", " + dishname + ", " + dish_image + ", " + AreaId + ", " + ItemChoiceIds + ", " + ItemChoiceQty + ", " + ItemId + ", " + Quantity +" DESC" , new String[] {});

1

Усовершенствованная версия (с использованием связанных параметров и меньше строк конкатенации):

Cursor cursor = db.rawQuery 
(
    "SELECT ? as _id, ?, ?, ?, ?, ?, ?, ?, ?, ? from " + 
    tablenameCartData + " ORDER BY ? DESC", 
    new String[] 
    { 
     key_id_cart, restaurant_ID, restaurant_name, restaurant_thumbnail, 
     dishname, dish_image, AreaId, ItemChoiceQty, ItemId, Quantity, 
     COLUMN_NAME 
    } 
); 
Смежные вопросы