1
我需要在iPhone應用程序中插入一堆數據,但在不同的表中。表名在這個數據中。插入到SQlite的不同表中
這就是我要怎樣做:
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);
當運行上面的腳本我得到的錯誤:沒有這樣的表:這是正常的,因爲在sqlite3_prepare_v2語句數據尚未綁定,所以SQLite不知道該表。
現在我將移動循環內部的sqlite3_prepare_v2塊並使用stringWithFormat我將更改帶有表名的第一個問號並在做好準備之後,但是還有其他解決方案嗎?更簡單嗎?
謝謝。映射的想法很好。但是,畢竟我使用了最簡單的解決方案。 – CristiC 2011-02-04 08:11:33