【问题标题】:Swift Sqlite3_column_text()Swift Sqlite3_column_text()
【发布时间】:2016-10-05 23:58:45
【问题描述】:
if sqlite3_prepare_v2(db, "select a from aaa", -1, &q,nil) == SQLITE_OK {
    while sqlite3_step(q) == SQLITE_ROW {
        let res = sqlite3_column_text(q, 1)
        print(res)
    }
} else {
    print("NOT WORKING")
    NSLog("%s", sqlite3_errmsg(db))
}

在我的表 aaa 中,我有一个名为“a”的字段,其值为 1,2,3,如下所示:

我正在尝试将值放入数组中或仅打印它们,但是当我打印 (print(res)) 时,这些值只是“nil”。

我怎样才能得到真正的价值?

编辑:值 (1,2,3) 是字符串而不是整数,这就是我选择 sqlite3_column_text() 而不是 sqlite3_column_int() 的原因

【问题讨论】:

  • 比较 stackoverflow.com/questions/25168030/… 以了解如何将 sqlite3_column_text 的结果转换为 Swift 字符串。
  • 第一列不应该有索引0而不是1吗?
  • 尝试使用 index = 0 而不是 1,或者直接使用列名:a
  • 我用 index = 0 尝试过,但没有成功。正如@Martin R 所说,似乎真正的问题是将 sqlite3_column_text 转换为 swift 字符串

标签: ios database swift sqlite


【解决方案1】:

已解决:

问题是将函数 sqlite3_column_text() 转换为字符串,swift3中的解决方案是:

let string = String(cString: sqlite3_column_text(statement, 0))

【讨论】:

  • 原来是0索引并转换成字符串!!
【解决方案2】:

我认为a 的数据类型是Int,而您将其作为文本sqlite3_column_text 获取。

试试这个:sqlite3_column_int

如果不起作用,请尝试以下组合:

  • 第 0 行的整数:sqlite3_column_int(q, 0)

  • 第 0 行的文本:sqlite3_column_text(q, 0)

【讨论】:

  • 感谢您的评论,我之前没有写过,但值是字符串而不是整数(查看编辑后的帖子)。
  • 试试这个:sqlite3_column_text(q, 0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2011-05-05
  • 2011-09-15
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多