0

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

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

4

2 回答 2

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 语句。

于 2013-09-13T13:19:20.843 回答
0

感谢您的回答,但我使用 (尽管文档中不推荐) 解决了我的问题execSQL()

于 2013-09-15T13:08:58.393 回答