我正在尝试获取参数的名称,但出现了问题。
代码:(重新产生问题的最少代码)
var db: OpaquePointer? = nil
var rc: Int32 = 0
rc = sqlite3_open("test.db", &self.db)
if rc != SQLITE_OK
{
print("cant open")
}
var statement: OpaquePointer? = nil
let sql = "insert into testtable values(?123);"
rc = sqlite3_prepare_v2(db, sql, -1, &statement, nil)
if rc != SQLITE_OK
{
print("cant prepare")
}
print(String(cString: sqlite3_bind_parameter_name(statement, 1))) // returns nil
sqlite3_finalize(statement)
sqlite3_close(db)
如果我使用@AAA
,:AAA
,$AAA
,我会获得参数名称,但如果我使用nil
(?123
格式,我会获得?NNN
)。但根据website,我应该?123
为String
。
我做错了什么?
谢谢。
答案 0 :(得分:2)
指定123
时,123
是索引。因此,您需要将1
而不是sqlite3_bind_parameter_name
传递给sqlite3_bind_xxx
。
您可以在{{1}}功能的documentation中查看更多内容。