ruby中使用数组的数据库查询
我试图在数组中找到所有有值的行,这是我的代码ruby中使用数组的数据库查询,ruby,sqlite,Ruby,Sqlite,我试图在数组中找到所有有值的行,这是我的代码 require 'sqlite3' db = SQLite3::Database.new('test.sqlite') res = db.query("SELECT w1.synsetid FROM words w1 WHERE w1.wordid IN (?)", arr) arr:字符串数组 我得到了这个错误 SQLite3::RangeException: bind or col
require 'sqlite3'
db = SQLite3::Database.new('test.sqlite')
res = db.query("SELECT w1.synsetid
FROM words w1
WHERE w1.wordid IN (?)", arr)
arr:字符串数组
我得到了这个错误
SQLite3::RangeException: bind or column index out of range
有什么帮助吗?的第二个参数是占位符值的数组:
-(对象)查询(sql,bind_vars=[],*args)
这是一种创建语句、绑定的方便方法
参数,并调用execute:
query
方法不知道它应该专门处理arr
数组,它只看到一个占位符和多个值
我认为您必须这样做:构建适当数量的占位符并将它们粘贴到SQL中。大概是这样的:
placeholders = (['?'] * arr.length).join(',')
res = db.query("select ... where w1.wordid in (#{placeholders})", arr)
您完全知道占位符中的内容,因此在这样构建SQL时,不必担心使用字符串插值和注入问题
如果您已经在使用Rails,那么还可以使用ActiveRecord包装SQLite表,然后使用常用的ActiveRecord接口:
words = Word.where(:wordid => arr)