2017-07-07 72 views
0

我試圖獲取參數的名稱,但出現了問題。無法在sqlite3中獲取綁定參數名稱

代碼:(最少的代碼重新產生問題)

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

在上面的問題中哪個是正確的?這個sqlite3_close(db)或者這個sqlite3_close(語句) – ArgaPK

回答

2

當您指定?123時,123是索引。所以你需要通過123,而不是1,致電sqlite3_bind_parameter_name

您可以在documentation中看到更多關於sqlite3_bind_xxx功能的更多信息。

+0

我認爲'?NNN'格式與其他格式('?AAA','@ AAA','$ AAA')一樣工作。感謝您的澄清。 – unknownymouse

+1

帶有'AAA'的名字被命名。帶有'NNN'的編號。名稱以1開頭,然後上升。編號的人有這個具體的號碼。 – rmaddy

+0

@rmaddy在上述問題中是否正確?此sqlite3_close(db)或此sqlite3_close(語句) – ArgaPK