SQLITE3字符串中where子句看起来很混乱

时间:2012-04-05 21:17:26

标签: ruby sqlite

我想知道是否有人对使用sqlite3 gem和ruby 1.9.x的以下语句之间的区别有任何澄清:

@db.execute("INSERT INTO table(a,b,c) VALUES (?,?,?)", 
some_int, other_int, some_string)

@db.execute("INSERT INTO table(a,b,c) VALUES (#{some_int},"+ 
+"#{some_int}, #{some_string})")

我的问题是:当我使用第一种方法进行插入时,我无法使用以下语句查询“c”列:

SELECT * FROM table WHERE c='some magic value'

我可以用这个:

"SELECT * FROM table WHERE c=?", "some magic value" 

但我真正想要使用的是

"SELECT * FROM table WHERE c IN ('#{options.join("','")}')" 

这不适用于插入类型。

是否有人知道阻止IN正常工作的数据库级别有何不同?

2 个答案:

答案 0 :(得分:0)

无法对行查询进行插入,但在获取数据时使用的行查询会使此查询工作。

您在移动应用程序中使用的SQLite时间不能正常运行您在SQLite中编写的这一行查询浏览该工作

答案 1 :(得分:0)

我很久以前就想到了这一点,但忘记回来指出它,以防有人在另一个时间发现这个问题。

差异原来是blob。显然,当您使用上面的第一个表单(替换方法使用(?,?))时,SQLite3使用博客来输入数据。但是,如果构造一个普通的SQL语句,它将作为常规字符串插入,并且两者不等效。