如何在swift中执行SQL where In查询并绑定语句中的params



下面我将分享我的现有代码,这些代码用于执行where IN条件,但现在我被如何在请求中传递值所困扰。

public func getName(list: [String], class: String) -> [String] {
let queryStatementString = "SELECT terms FROM termo WHERE terms IN =? AND class=?"
var queryStatement: OpaquePointer? = nil
var arr : [String] = []

if sqlite3_prepare_v2(db, queryStatementString, -1, &queryStatement, nil) == SQLITE_OK {
if sqlite3_bind_text(queryStatement, 1,terminalNameList, -1, SQLITE_TRANSIENT) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure binding foo: (errmsg)")
}
while sqlite3_step(queryStatement) == SQLITE_ROW {
let ter = String(describing: String(cString: sqlite3_column_text(queryStatement, 0)))
arr.append(ter)
}
} else {
print("SELECT statement could not be prepared")
}
sqlite3_finalize(queryStatement)
return arr
}

下面是我的SQL查询,我需要它来执行

let queryStatementString = "SELECT terms FROM termo WHERE terms IN =? AND class=?"

在这里,我试图传递值

if sqlite3_bind_text(queryStatement, 1, list, -1, SQLITE_TRANSIENT) != 
SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure binding foo: (errmsg)")
}

请大家帮帮我,提前谢谢

您可以借助以下示例构建带有where子句的选择查询

let query = users.select(email)           // SELECT "email" FROM "users"
.filter(name != nil)     // WHERE "name" IS NOT NULL
.order(email.desc, name) // ORDER BY "email" DESC, "name"
.limit(5, offset: 1)     // LIMIT 5 OFFSET 1

你可以在这里找到更多信息

最新更新