我在SQLite
创建了一个列类型为'date'的表格。
但是,当我用params调用insert语句时:
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')
请帮帮我!谢谢!
答案 0 :(得分: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
调用中使用的索引。