我正在尝试将数组中的批处理数据插入到我的移动项目的Sqlite3中。</ p>
我的代码似乎工作正常,但它不会插入所有数据。
PS:我编辑了我的代码:
-(BOOL) saveBatchData:(NSArray *)userSourceID userDestID:(NSArray *)userDestID message:(NSArray *)message sentDate:(NSArray *)sentDate
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &database) == SQLITE_OK)
{
for(int i=0; i<[message count]; i++)
{
NSString *insertSQL = [NSString stringWithFormat:@"insert into messages (userSourceID,userDestID, message, sentDate) values (\"%d\",\"%d\", \"%@\",\"%@\")",[[userSourceID objectAtIndex:i] integerValue],[[userDestID objectAtIndex:i] intValue], [message objectAtIndex:i],[sentDate objectAtIndex:i]];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(database, insert_stmt,-1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
sqlite3_finalize(statement);
return YES;
} else {
NSLog(@"Hata = %s",sqlite3_errmsg(database));
return NO;
}
sqlite3_reset(statement);
}
sqlite3_close(database);
}
return NO;
}
输出似乎是,函数只在数组的39个元素上添加了几行(我认为它是4)。有人可以帮我解决我的错误吗?
...问候
答案 0 :(得分:1)
你正在准备很多陈述,但只执行最后一个陈述。
将呼叫转移到sqlite3_step
循环。
请注意,无论步骤是否成功,您都必须为准备好的每个陈述致电sqlite3_finalize
。
如果不调用sqlite3_close
,则不得跳出该功能。
在声明完成后,您不得致电sqlite3_reset
。