2017-07-07 8 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を使用しますが、私は?123?NNN形式)を使用する場合、私はnilを取得する場合、私はパラメータ名を取得します。しかし、websiteによれば、私は?123Stringとすべきです。

私は間違っていますか?

ありがとうございます。

+0

上記の質問には正しいことはありますか?このsqlite3_close(db)またはこのsqlite3_close(statement) – ArgaPK

答えて

2

?123と指定すると、123がインデックスになります。したがって、への呼び出しに1ではなく、123を渡す必要があります。

の機能については、documentationをご覧ください。

+0

'?NNN'形式は他の形式('?AAA'、 '@ AAA'、' $ AAA')と同じように動作すると思いました。明確化のためにありがとうございます。 – unknownymouse

+1

AAAの名前が付けられています。 「NNN」を持つものは番号が付けられています。名前のついたものは1で始まり、上に上がります。番号が付けられたものはその特定の番号を持つ。 – rmaddy

+0

上記の質問で@rmaddyは正しいですか?このsqlite3_close(db)またはこのsqlite3_close(statement) – ArgaPK

関連する問題