SQLite批量插入IOS代码示例

来源:互联网 发布:软件被劫持 编辑:程序博客网 时间:2024/06/05 02:52
    参考前一篇博文:《如何向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++), [recorddoubleValue]) != SQLITE_OK) {
      NSLog(@"绑定失败:%@", [[NSString alloc]initWithUTF8String:sqlite3_errmsg(db)]);
      continue;
   }
   if(sqlite3_bind_text(stmt (bindPos++),[[recordstringValue] UTF8String], -1,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;
}


0 0