0

我想知道是否有人对使用 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正常工作的区别是什么?

4

2 回答 2

0

插入行查询是不可能的,但行查询在获取数据时使用。

您在移动应用程序中使用的 SQLite 无法正常工作 bat 您在 SQLite 中编写的此行查询 浏览该工作

于 2012-04-06T06:44:40.887 回答
0

我很久以前就知道了,但忘了回来指出,以防有人在其他时间发现这个问题。

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

于 2012-09-18T20:52:37.400 回答