2015-04-01 4 views
-1
return database.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE " + HISTORY_COLUMN_NAME + " = " + pref.getString("KEY", null), null);   

ОшибкаAndroid базы данных ошибка синтаксиса

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sset.jibin.wakemethere/com.sset.jibin.wakemethere.History}: android.database.sqlite.SQLiteException: near "=": syntax error (code 1): , while compiling: SELECT * FROM history WHERE name = 
+0

Любое решение будет очень полезно –

+2

для одного, не помещайте свой код в js-фрагменты, если он не js. – njzk2

+0

use '...." = '"+ pref.getString (" KEY ", null), null) +"' "; ' – Aspicas

ответ

1

Вам нужно бежать ваши параметры, например, так:

return database.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE " + HISTORY_COLUMN_NAME + " = '" + pref.getString("KEY", null) + "'", null); 

Это приведет к запросу, такие как SELECT * FROM <table> WHERE <column> = '<value>'

It было бы разумнее позволить SDK избежать ваших параметров для вас, используя query() вместо rawQuery(). В вашем запросе нет ничего сложного для query().

+0

Сэр. Если я сделаю так, как вы сказали, данные не извлекаются из базы данных. Спасибо за ответ –

+1

Вы можете войти в систему, чтобы узнать, какие значения вы используете, или даже жестко запрограммировать их для тестирования. Вышеупомянутый исправляет ваш неправильный SQL, если данные не возвращаются, может быть, что значение «KEY» неверно, что нет данных в БД и т. Д. – 323go

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