简单的问题:案例表达在Android中有效吗?
我正在尝试实现一个表达式,在插入时检查用户值并根据它进行一些修改。我知道表达式在语法上是正确的,因为它在INSERT命令内的SQLite提示符下工作。但是,当我尝试在Android中使用它时(使用SQLiteDatabase.insert()
),表达式被视为String。我也尝试使用一些核心SQLite函数来实现它,这个新表达式也被视为一个String。有没有想过为什么会这样?
编辑1:rawQuery()
也不是一个选项。该方法被忽略。 Here是似乎与方法调用相关的logcat消息。
答案 0 :(得分:4)
insert
方法将所有值视为实际值,而不是SQL表达式。
所以当你使用这样的代码时:
cv.put("Col1", "CASE X WHEN 42 THEN 'y' END");
db.insert("Tab", null, cv);
然后假设字符串只是一个字符串,并且您希望插入该字符串。这会产生如下SQL命令:
INSERT INTO Tab(Col1) VALUES('CASE X WHEN 42 THEN ''y'' END')
如果你想做比insert()
设计的简单案例更复杂的事情,你必须改用rawQuery并手工构建整个SQL语句。
答案 1 :(得分:0)
感谢您的回答,但我解决了我的问题(尽管不建议在文档中使用)execSQL()
。