参考前一篇博文:
《如何向SQLite插入大量记录和其他一些使用心得》
SQLite批量插入的IOS 代码示例(因为使用的是C API,C/C++用法与之类似):
-------------------------代码的分割线-------------------------
// 打开数据库的部分省略
if (![self beginTransaction]) {
DLog(@
"开始事务失败
");
return;
}
sqlite3_stmt* stmt = NULL;
if (sqlite3_prepare(db,[sql UTF8String],-1,&stmt,NULL) != SQLITE_OK) {
NSLog(@"数据库prepareStatment失败:%@",sql);
return;
}
for (Record* record in records) {
int bindPos= 1; // 绑定位置从1开始
if (sqlite3_bind_int(
stmt,(bindPos++),[record intValue]) != SQLITE_OK) {
NSLog(@
"绑定失败:%@
",[[NSString alloc] initWithUTF8String:sqlite3_errmsg(
db)]);
continue;
}
if (sqlite3_bind_double(
stmt,
(bindPos++),
[record doubleValue]) != SQLITE_OK) {
NSLog(@
"绑定失败:%@
",[[NSString alloc] initWithUTF8String:sqlite3_errmsg(
db)]);
continue;
}
if (sqlite3_bind_text(
stmt,
(bindPos++),[
[record stringValue]UTF8String],SQLITE_STATIC) != SQLITE_OK) {
NSLog(@
"绑定失败:%@
",[[NSString alloc] initWithUTF8String:sqlite3_errmsg(
db)]);
continue;
}
if (sqlite3_step(
stmt) != SQLITE_DONE) { // 执行插入
NSLog(@
"%@
",[[NSString alloc] initWithUTF8String:sqlite3_errmsg(mDB)]);
continue;
}
sqlite3_reset(
stmt);
// 清空绑定数据
}
sqlite3_finalize(
stmt);
if (![self commitTransaction]) {
DLog(@
"提交事务失败
");
return;
} (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|