我想知道是否有人对使用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
正常工作的数据库级别有何不同?
答案 0 :(得分:0)
无法对行查询进行插入,但在获取数据时使用的行查询会使此查询工作。
您在移动应用程序中使用的SQLite时间不能正常运行您在SQLite中编写的这一行查询浏览该工作
答案 1 :(得分:0)
我很久以前就想到了这一点,但忘记回来指出它,以防有人在另一个时间发现这个问题。
差异原来是blob。显然,当您使用上面的第一个表单(替换方法使用(?,?))时,SQLite3使用博客来输入数据。但是,如果构造一个普通的SQL语句,它将作为常规字符串插入,并且两者不等效。