2013-04-21 22 views
0

我在SQLite中創建了帶有'date'列的表。 但是,當我打電話使用參數插入語句:如何在SQLite中插入strftime for for循環

sqlite3_bind_text(stmt, 6, [@"strftime('%%Y-%%m-%%d at %%H:%%M','now', 'localtime')" UTF8String], -1, SQLITE_TRANSIENT); 

它不工作,並返回結果:

strftime('%%Y-%%m-%%d at %%H:%%M','now', 'localtime') 

請幫幫我!謝謝!

回答

1

當您撥打sqlite3_bind_text時,您將綁定一個文字字符串值。該字符串不被執行。

讓我們假設你有這樣的事情:

sqlite3_stmt *stmt; 
sqlite3_prepare_v2(dbHandle, "INSERT INTO table_name (column1, column2) VALUES (?, ?)", -1, query, nil); 
sqlite3_bind_text(stmt, 1, [@"strftime('%%Y-%%m-%%d at %%H:%%M','now', 'localtime')" UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_text(stmt, 2, "Other value", -1, SQLITE_TRANSIENT); 

你想在這種情況下,什麼是這樣的:

sqlite3_stmt *stmt; 
sqlite3_prepare_v2(dbHandle, "INSERT INTO table_name (column1, column2) VALUES (strftime('%%Y-%%m-%%d at %%H:%%M','now', 'localtime'), ?)", -1, query, nil); 
sqlite3_bind_text(stmt, 1, "Other value", -1, SQLITE_TRANSIENT); 

你想要strftime直接撥打電話查詢。請注意,由於您在查詢中只有一個?,因此您需要將調用中使用的索引調整爲sqlite3_bind_xxx

+0

太好了,它對我有用! – user2303587 2013-04-21 04:01:07