NSString *filename;//数据库文件路径
sqlite3 *database; //sqlite3数据库句柄的指针
//打开数据库
- (int) open{
int rc=sqlite3_open([filename UTF8String], &database);
if (rc) {
sqlite3_close(database);
NSLog(@"open database failed");
}
return rc;
}
//关闭数据库
- (void) close{
if (database!=NULL) {
sqlite3_close(database);
}
}
接下来插入、删除、更新都是用sqlite3_exec函数,记住执行语句,必须要先打开数据库,完成之后需要关闭数据库。
//执行 insert,update,delete 等非查询SQL语句
- (int)executeNonQuery:(NSString *)sql error:(NSError **)error {
int rc;
char *errmsg;
rc = [self open];
if (rc) {
//错误处理
if (error != NULL) {
NSDictionary *eDict =
[NSDictionary dictionaryWithObject:@"open database failed"
forKey:NSLocalizedDescriptionKey];
*error =
[NSError errorWithDomain:kSqliteErrorDomain code:rc userInfo:eDict];
}
return rc;
}
rc = sqlite3_exec(database, [sql UTF8String], NULL, NULL, &errmsg);
if (rc != SQLITE_OK) {
if (error != NULL) {
NSDictionary *eDict =
[NSDictionary dictionaryWithObject:@"exec sql error"
forKey:NSLocalizedDescriptionKey];
*error =
[NSError errorWithDomain:kSqliteErrorDomain code:rc userInfo:eDict];
}
NSLog(@"%s", errmsg);
sqlite3_free(errmsg);
}
[self close];
return rc;
}
[self open];
// 查
strsql = "select * from users";
// SQLITE_API int sqlite3_prepare_v2(
// sqlite3 *db, /* Database handle */
// const char *zSql, /* SQL statement*/
// int nByte, /* 结果集的最大长度。*/
// sqlite3_stmt **ppStmt, /* OUT: 结果集 */
// const char **pzTail /* OUT:指向结果集没有用到的内存部分的指针。 */
// );
sqlite3_stmt* rc;//陈述式句柄
if (sqlite3_prepare_v2(db, strsql, -1, &rc, NULL)!=SQLITE_OK) {
}
// sqlite3_step讲结果集数据指针指向下一个元素。
// 这个函数的返回值如果是SQLITE_ROW就表示我们的结果集里面有数据。
// 否则我们的结果集就是空的。
while (sqlite3_step(rc)==SQLITE_ROW) {
// sqlite3_column系列函数。一般有两个输入参数。第一个是结果集指针,第二是数据所在列的序号。
// 比如我们现在用的sqlite3_column_int和sqlite3_column_text。
printf("id:%d | username:%s | password:%s \n",sqlite3_column_int(rc, 0),sqlite3_column_text(rc, 1),sqlite3_column_text(rc, 2));
}
// 查完后一定要释放结果集。
sqlite3_finalize(rc);
[self close];
-(int)beginService{
char *errmsg;
int rc = sqlite3_exec(database, "BEGIN transaction", NULL, NULL, &errmsg);
return rc;
}
-(int)commitService{
char *errmsg;
int rc = sqlite3_exec(database, "COMMIT transaction", NULL, NULL, &errmsg);
return rc;}
-(int)addModelsTest:(NSArray *)models error:(NSError **) error{
char *errmsg;
__block NSMutableArray *sqls=[NSMutableArray array];
__block NoticeModel *aModel=[[NoticeModel alloc] init];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i=0; i<100000; i++) {
aModel=[models objectAtIndex:0];
NSString *sql=[NSString stringWithFormat:@"insert into notices values('%lf','%d','%@','%@','%@','%d','%d','%d','%d','%@')",aModel.myID,aModel.news_id,aModel.news_title,aModel.content,aModel.pic,aModel.sort,aModel.record_status,aModel.counter,aModel.suid,aModel.publish_time];
[sqls addObject:sql];
}
int r1=[self open];
[self beginService];
int rc;
int i;
for (i=0; i<100000; i++) {
rc=sqlite3_exec(database, [[sqls objectAtIndex:i] UTF8String], NULL, NULL, &errmsg);
}
[self commitService];
[self close];
if (i ==100000) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"call back, the data is: %@", i);
});
} else {
NSLog(@"error when download:%@", error);
}
});
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有