SQLite3-增删改查 转载并修改
网上有许多关于SQLite的文章,但是都没有看到这种 增删改查 都具备的文章,今有幸看到,故转这在这里。 转自 http://tr4work.blog.163.com/blog/static/1371493142010199296820/ 也会附上一些常用的方法!代码全部可以运行! #imp //db.h文件中需要#imp @implementationdb @synthesizeinfo; -(NSString*) paths { NSArray*paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMaskYES); NSString*documentDirectory = [pathsobjectAtIndex:0]; return[documentDirectorystringByAppendingFormat:@"da } -(int) create//创建表方法。sql语句部分和普通SQL语句几乎完全一样 { intresult =sqlite3_open([[selfpaths]UTF8String],&database);//需要打开数据库 constchar*sql ="create table if not exists info(id integer primary key,inf integer);"; char*errorMsg; intsuccess =sqlite3_exec(database,sql,NULL,&errorMsg);//执行操作。除了select外其他的都用sqlite3_exec,select用sqlite3_prepare_v2。 sqlite3_close(database);//关闭数据库 //sqlite3.m里面定义了很多状态码。每个代码块里面的success result都是接受的状态码。 if(success ==SQLITE_OK)//判断是否执行成功,true则成功,反之..也可以用result来查看数据库打开的时候是否成功。在测试的时候经常要用道这些状态码。完成测试之后可以不使用success之类的。 return22; else 33; } //插入一条数据,下面部分就差不多了。查询会重新说 -(int) insert { database); *sql ="insert into info(id,inf) values((select MAX(id) from info)+1,11);" sqlite3_close(database); SQLITE_OK) ; } -(int) update { *sql ="update info set inf = 99 where id = 2;" sqlite3_close(database); int) deletes { intresult = sqlite3_open([[selfpaths] UTF8String],&database); *sql ="delete from info where id = 2;"intsuccess = sqlite3_exec(database,159)">if(success == SQLITE_OK) ; } -(NSString*) selects//对于熟悉jdbc的朋友来说,这里的理解要容易的多,这里有点想jdbc { *sql ="SELECT * FROM info where id = 2"; sqlite3_stmt *statement; intsuccess = (sqlite3_prepare_v2(database,-1,&statement,159)">NULL)); intids; intinf; intsigns =0; //逐行取出检索出来的数据。0,1是一条纪录中的字段,例如我的表里有两个字段,id,inf,那么一条纪录中0位置是id,1位置是inf,如果在sql语句中进行了指定,则按照sql语句中的来,只是要从0开始。signs是我要用的数据,大家可忽略 while(sqlite3_step(statement) == SQLITE_ROW) { ids = sqlite3_column_int(statement,0); inf = sqlite3_column_int(statement,211)">1); signs =1; } sqlite3_finalize(statement); sqlite3_close(database); if(success == SQLITE_OK) if(signs ==1) return[[NSString alloc] initWithFormat:@"%i==%i",ids,inf];
return@"there is no da @"%ierror%i",inf]; } @end 有些时候,大家的sql并不是都想我的例子中的一样简单,可以有些里面还参杂了变量,那么我们一般的做法是 NSString *str = [[NSString alloc] initWithFormat:@"%i",11]; 但是str是不在sqlite3中执行的。我们需要用char类型的。这个原因我好像忘记了.... 类型转换的例子:
NSString *str = [[NSString alloc] initWithFormat: @"SELECT * FROM infos WHERE year = %i and month = %i and day = %i",year,month,day]; char *sql = [str UTF8String]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |