如何在SQLite中使用for循环插入strftime

时间:2013-04-21 03:31:51

标签: ios sqlite

我在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')

请帮帮我!谢谢!

1 个答案:

答案 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调用中使用的索引。