选择行时,Android SQLite数据库中没有此类列异常

时间:2014-12-26 20:18:16

标签: android sqlite android-sqlite

我正在使用android SQLite数据库。 我得到SQLLite异常 '引起:android.database.sqllite.SQLITEException:no such column DD(code 1):,编译时:

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

选择具有DD-Aircel接触的行(而不是插入行时)。 我认为这是由于连字符 - ' - '在DD-Aircel。 列联系的数据类型为STRING。 any1 plz可以用解决方案解释。 提前谢谢。

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:0)

将值放在引号中:

WHERE contact ='DD-Aircel'

如果您使用的是查询,请使用参数化值,如:

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