Android中的SQLite案例表达式

时间:2013-09-13 12:52:17

标签: android sqlite android-sqlite

简单的问题:案例表达在Android中有效吗? 我正在尝试实现一个表达式,在插入时检查用户值并根据它进行一些修改。我知道表达式在语法上是正确的,因为它在INSERT命令内的SQLite提示符下工作。但是,当我尝试在Android中使用它时(使用SQLiteDatabase.insert()),表达式被视为String。我也尝试使用一些核心SQLite函数来实现它,这个新表达式也被视为一个String。有没有想过为什么会这样?

编辑1:rawQuery()也不是一个选项。该方法被忽略。 Here是似乎与方法调用相关的logcat消息。

2 个答案:

答案 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()