我正在使用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可以用解决方案解释。 提前谢谢。
答案 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" };