【问题标题】:How to execute the SQL where In query in swift and bind the params in the statement?如何在swift中执行SQL where In查询并绑定语句中的参数?
【发布时间】:2021-09-04 15:36:00
【问题描述】:

下面我将分享我用于执行 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)")
        }

请大家帮帮我,在此先感谢

【问题讨论】:

  • 这个问题是关于什么的?是关于如何使用 SQLite 本身进行查询吗? Objective-c 和 sqlite.swift 标签是干什么用的?
  • 我在 swift 中使用 SQLite,我被困在 Where In 语句中,所以我正在寻找解决方案

标签: ios swift objective-c sqlite sqlite.swift


【解决方案1】:

您可以借助以下示例来构建带有 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

您可以找到更多信息here

【讨论】:

    猜你喜欢
    • 2011-03-23
    • 2023-03-26
    • 1970-01-01
    • 2010-09-23
    • 2021-08-03
    • 2012-11-27
    • 2012-09-27
    • 1970-01-01
    • 2018-07-07
    相关资源
    最近更新 更多