我创建了列类型为“日期”的表SQLite
。但是,当我用参数调用插入语句时:
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')
请帮我!谢谢!
当您调用时,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
。