SQLite rawquery - PullRequest
       5

SQLite rawquery

0 голосов
/ 24 июня 2011

Я получаю сообщение об ошибке в Rawquery на Eclipse на БД в каталоге активов. БД «предварительно загружена» таблицами и данными, а строка SQL, первая строка комментария, работает в браузере БД SQLite. Когда я копирую строку SQL в код и изменяю, чтобы удалить кавычки, это ошибки. Приведенный ниже код взят из «стандартного» открытого класса. DataBaseHelper расширяет SQLiteOpenHelper {. Я новичок в android / java и буду признателен за любую помощь или предложения.

        public Cursor getAllSectionDescriptions( String DBtable, String source){
    //Works in DB: SELECT  "Description" FROM  "SectionProps"  WHERE   Source = "UK"        
    //String q = "SELECT  Description FROM  SectionProps  WHERE   Source = UK " ; <= errors in code
    String q = "SELECT  Description FROM " + DBtable + "  WHERE   Source = " + source + " "; //<== errors in code
    //06-24 16:53:03.373: ERROR/AndroidRuntime(1000): Caused by: android.database.sqlite.SQLiteException: no such table: SectionProps: , while compiling: SELECT  Description FROM  SectionProps  WHERE   Source = UK 

    Cursor mCursor = myDataBase.rawQuery(q, null);
    mCursor.moveToFirst();
    return mCursor;

}//end cursor

Ответы [ 2 ]

0 голосов
/ 13 ноября 2014

Для выполнения запросов есть два метода: Выполнить метод db.rawQuery. Выполнить метод db.query. Чтобы выполнить необработанный запрос для извлечения всех отделов:

Cursor getAllDepts()
  {
   SQLiteDatabase db=this.getReadableDatabase();
   Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, 
        "+colDeptName+" from "+deptTable,new String [] {});

   return cur;
  }

Метод rawQuery имеет два параметра: Строковый запрос: Оператор выбора String [] selection args: Аргументы, если в оператор выбора включено предложение WHERE Примечания Результат запроса возвращается в объекте Cursor.В операторе выбора, если столбец первичного ключа (столбец идентификатора) таблицы имеет имя, отличное от _id, необходимо использовать псевдоним в форме SELECT [имя столбца] в качестве _id, поскольку объект Cursor всегда ожидает, что первичныйключевой столбец имеет имя _id, иначе будет выдано исключение.

0 голосов
/ 24 июня 2011

Похоже, вы должны поставить двойные кавычки вокруг имен ваших объектов.Итак, вы захотите сделать это:

String q = "SELECT  \"Description\" FROM \"" + DBtable + "\"  WHERE   Source = \"" + source + "\" ";

Обратите внимание на двойные кавычки, перед которыми стоит escape-символ '\'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...