iOS中sqlite的详细用法
本文实例为大家分享了ios中sqlite的具体操作方法,供大家参考,具体内容如下
#import<sqlite3.h>
@interfaceViewController()
{
sqlite3*_sqldb;
}
@end
@implementationViewController
-(void)viewDidLoad
{
[superviewDidLoad];
//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.
[selfOpenDb];
[selfcreateTable];
[selfinsertData];
[selfFindData];
}
//打开数据库
-(void)OpenDb{
NSArray*arrs=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
//创建数据库,如果数据库存在就直接打开,不存在就创建打开
NSString*path=[arrslastObject];
NSString*documentpath=[pathstringByAppendingPathComponent:@"sql.db"];
intreslut=sqlite3_open([documentpathUTF8String],&_sqldb);
if(reslut==SQLITE_OK){
NSLog(@"数据库已被打开");
}
}
//通过数据库实例创建表
-(void)createTable{
//不带参数的sql语句
constchar*sql="createtableifnotexistst_person(idintegerprimarykeyautoincrement,nametext,ageinteger);";
char*error;
//sqlite3_exec可以执行一切不带参数的SQL语句。如果是带参数最好不用,防止SQL注入漏洞攻击
intresutl=sqlite3_exec(_sqldb,sql,NULL,NULL,&error);
if(resutl==SQLITE_OK){
NSLog(@"创建表成功");
}
else{
NSLog(@"创建表失败--》%s",error);
}
}
//插入数据
-(void)insertData{
//带参数的SQL语句"?"是带参数的占位符
constchar*sql="insertintot_person(name,age)values(?,?);";
sqlite3_stmt*stmp;
//在执行SQL语句之前检查SQL语句语法,-1代表字符串的长度
intresult=sqlite3_prepare_v2(_sqldb,sql,-1,&stmp,NULL);
if(result==SQLITE_OK){
NSLog(@"插入SQL语句语法没有问题");
//绑定参数,插入的参数的下标是从1开始
sqlite3_bind_text(stmp,1,"gcb",-1,NULL);
sqlite3_bind_int(stmp,2,12);
//执行参参数的SQL语句,不能有exec
intresult=sqlite3_step(stmp);
//插入进行判断,要用sqLite_Done来判断
if(result==SQLITE_DONE){
NSLog(@"插入成功");
}
else{
NSLog(@"插入失败");
}
}
else{
NSLog(@"插入SQL语句有问题");
}
}
-(void)FindData{
char*sql="selectid,name,agefromt_person";
//查询做好用step执行
sqlite3_stmt*stmt;
//检查SQL语句的语法问题
intresult=sqlite3_prepare_v2(_sqldb,sql,-1,&stmt,NULL);
if(result==SQLITE_OK){
while(sqlite3_step(stmt)==SQLITE_ROW){
//查询的列是0开始插入的列从1开始
//intxh=sqlite3_column_int(stmt,0);
intxh=sqlite3_column_int(stmt,0);
char*name=(char*)sqlite3_column_text(stmt,1);
intage=sqlite3_column_int(stmt,2);
NSLog(@"xh=%i-->name=%s-->age=%i",xh,name,age);
}
}
else{
NSLog(@"查询SQL语法有误");
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。