我使用SQLite.swift并希望创建一个这样的SQL语句:
"SELECT * FROM user WHERE id IN({userDtoIds})"
我做了
let arr:[String] = // NSArray of Strings
let stmt:Statement = db.prepare("SELECT * FROM \(tableName) WHERE id IN(?)")
但stmt.run()
不允许[String]
作为参数。
如何在SQLite.swift中使用NSArray作为SQL语句的参数?
答案 0 :(得分:0)
如果您使用的是类型安全图层,则可以使用contains()
:
table.filter(contains(ids, id))
// the above assumes this boilerplate precedes it:
let table = db["tableName"]
let id = Expression<Int64>("id")
let ids: [Int64] = [1, 2, 3, 4, 5] // e.g.
如果您正在使用原始SQLite3 API,它不支持数组,因此您需要自行格式化:
let template = join(", ", [String](count: count(ids), repeatedValue: "?"))
let stmt = db.prepare(
"SELECT * FROM \(tableName) WHERE id IN (\(template))", ids
)