如何使用 swift 从 sqlite3 db 检索字符串字段
Howto retrieve a string field from sqlite3 db with swift
我正在从 sqlite3 数据库读取 table。我设法读取了一个 int 字段(我的代码示例中的 iEventYear )
但是我不知道如何从sqlite数据库中读取字符串字段。
我不想使用额外的库或框架,但如果可能的话,纯粹包含 sqlite3.h。
这是我的代码来演示我的问题:
let sql = "SELECT year,title FROM historyevents";
var statement:COpaquePointer = nil
//var tail: CString = ""
if sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK {
println("Failed to prepare statement")
exit(1)
}else{
while sqlite3_step(statement) == SQLITE_ROW {
var iEventYear:Int16 = Int16(sqlite3_column_int(statement, 0));
//Howto retrieve a string ?
var sEventTitle:String = String(sqlite3_column_xxxxxx(statement, 1));
println(count);
}
println("query ok.");
}
您应该能够以这种方式检索字符串。
let sEventTitle = String.fromCString(UnsafePointer<CChar>(sqlite3_column_text(statement, 1)))
但是我的建议是使用 SQLite 包装器,最著名的包装器之一是 FMDB,它位于
Objective-C(显然在 Swift 中也能很好地工作),但如果您更喜欢 Swift 中的某些内容,您可以查看 SwiftSQLite
我正在从 sqlite3 数据库读取 table。我设法读取了一个 int 字段(我的代码示例中的 iEventYear ) 但是我不知道如何从sqlite数据库中读取字符串字段。
我不想使用额外的库或框架,但如果可能的话,纯粹包含 sqlite3.h。
这是我的代码来演示我的问题:
let sql = "SELECT year,title FROM historyevents";
var statement:COpaquePointer = nil
//var tail: CString = ""
if sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK {
println("Failed to prepare statement")
exit(1)
}else{
while sqlite3_step(statement) == SQLITE_ROW {
var iEventYear:Int16 = Int16(sqlite3_column_int(statement, 0));
//Howto retrieve a string ?
var sEventTitle:String = String(sqlite3_column_xxxxxx(statement, 1));
println(count);
}
println("query ok.");
}
您应该能够以这种方式检索字符串。
let sEventTitle = String.fromCString(UnsafePointer<CChar>(sqlite3_column_text(statement, 1)))
但是我的建议是使用 SQLite 包装器,最著名的包装器之一是 FMDB,它位于 Objective-C(显然在 Swift 中也能很好地工作),但如果您更喜欢 Swift 中的某些内容,您可以查看 SwiftSQLite