2014-12-26 1 views
0

Я работаю с базой данных Android android. Я получаю SQLLite исключения как «причиненные: android.database.sqllite.SQLITEException:no such column DD(code 1):, при компиляции:Нет такого исключения столбцов в базе данных SQLite SQL при выборе строк

SELECT _id, sms, contact, time FROM messages WHERE contact =DD-Aircel ORDER BY _id DESC '

при выборе строки, имеющей контакт как DD-Aircel (не в то время, вставив то же). Я думаю, что это связано с дефисом «-» в DD-Aircel. Тип столбца контакта STRING. Может any1 PLZ объяснить с решением. Спасибо заранее.

+1

DD-Aricel - это строка, поэтому ее нужно окружать кавычками, всегда окружать строки кавычками! – bakriawad

ответ

4

Я считаю, что вы хотите сделать, это следующее:

db.query(DATABASE_MSGTABLE,             // Table name 
    new String[] { KEY_MSGGROWID, KEY_MSGSMS, KEY_MSGCONTACT, KEY_MSGTIME }, // Columns to select 
    "contact = ?",                // selection (WHERE clause) 
    new String[] { "DD-Aircel" },            // Arguments for the Where clause 
    null,                  // GROUP BY (leave null because you're not grouping) 
    null,                  // HAVING (leave null because you're not grouping) 
    "_id DESC");                // ORDER BY 

Если вы всегда фильтруете одно и то же имя контакта (т.е. вы всегда фильтруете значение "DD-Aircel"), можно просто использовать запрос выбора contact = 'DD-Aircel'.

Использование запроса выбора contact = ? позволяет фильтровать любое произвольное имя contact. Вы должны сделать это, когда имя контакта неизвестно во всех случаях. Такой подход гарантирует, что запрос работает, даже если имя контакта содержит одну цитату (например, если имя контакта Dad's Cell).

+0

Tx Tim, ур метод также отлично работает даже с записью столбца, имеющей некоторые специальные символы, такие как одиночная кавычка. Tx agaim 4 дает возможность –

0

Поместите значение в кавычки:

WHERE contact ='DD-Aircel' 

Если вы используете запрос, использовать параметризованные значения, как:

String selection = "contact = ?"; 
String[] selectionArgs = new String[] { "DD-Aircel" }; 
+0

любил бы даже более короткий ответ '' DD-Aircel'' lol. – Jimmy

+2

Как правильно показывать правильный путь? Используя placeholder '?' И аргументы? – WarrenFaith

+0

На самом деле в коде я не использую необработанный запрос. Что я делаю: –

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