【发布时间】:2011-02-03 18:46:39
【问题描述】:
我需要在 iPhone 应用程序中但在不同的表中插入一堆数据。表名在此数据中。
这就是我想要做的:
NSString *statement = @"insert into ? values (?, ?, 0)";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, [statement UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
{
for(UpdateItems *item in updateData){
sqlite3_bind_text( compiledStatement, 1, [item.table UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text( compiledStatement, 2, [item.code UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text( compiledStatement, 3, [item.data UTF8String], -1, SQLITE_TRANSIENT);
while(YES){
NSInteger result = sqlite3_step(compiledStatement);
if(result == SQLITE_DONE){
break;
}
else if(result != SQLITE_BUSY){
break;
}
}
sqlite3_reset(compiledStatement);
}
} else
printf("db error: %s\n", sqlite3_errmsg(database));
sqlite3_finalize(compiledStatement);
sqlite3_close(database);
运行上述脚本时,我收到错误:no such table: ? 这是正常的,因为在 sqlite3_prepare_v2 语句中数据尚未绑定,因此 SQLite 不知道该表。
现在我将在循环内移动洞 sqlite3_prepare_v2 块并使用 stringWithFormat 我将使用表名更改第一个问号并在准备好之后,但是有没有其他解决方案 - 更简单?
【问题讨论】: