【问题标题】:Swift - How to catch nil value in SQLite query?Swift - 如何在 SQLite 查询中捕获 nil 值?
【发布时间】:2018-08-14 00:04:04
【问题描述】:

我正在使用 SQLite 通过以下代码获取数据。

func idToName(id: String) -> String {
        do {
            if (id == "") {
             return ""
            } else {
                var SqlQuery="Select kod from id where idText="
                SqlQuery.append("\""+id+"\"")
                let stmt = try db?.prepare(SqlQuery)
                let tempScalar = try stmt?.scalar() as! String
                return tempScalar
            }
        } catch {
            print("failed")
        }
        return ""
    }

语句中有一个 do try catch 块。但是,当 tempScalar 变量为零时,它不会在 catch 块中捕获并出现错误,我该如何改进或修复该代码?

【问题讨论】:

  • 不强制转换,而是使用if let
  • 为什么不直接说 let tempScalar = try stmt?.scalar() as? String ?? "" 并使用 nil 合并运算符?
  • 请注意,您的代码容易受到SQL injection的攻击
  • @MartinR 我怎样才能让它更安全?
  • 阅读准备好的语句和绑定。 – 显然您正在使用 SQLite.swift,它有许多用于数据库查询的高级方法,例如参见 Building Complex Queries

标签: ios swift sqlite


【解决方案1】:

您可以查看IFNULL from here

例如

Select kod from id where idText= ifnull(id,0)

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多