iOS中sqlite的详细用法
程序员文章站
2023-12-02 18:04:46
本文实例为大家分享了ios中sqlite的具体操作方法,供大家参考,具体内容如下
#import
@interface...
本文实例为大家分享了ios中sqlite的具体操作方法,供大家参考,具体内容如下
#import <sqlite3.h> @interface viewcontroller () { sqlite3 *_sqldb; } @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; // do any additional setup after loading the view, typically from a nib. [self opendb]; [self createtable]; [self insertdata]; [self finddata]; } //打开数据库 -(void)opendb{ nsarray *arrs= nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes); //创建数据库,如果数据库存在就直接打开,不存在就创建打开 nsstring *path=[arrs lastobject] ; nsstring *documentpath= [path stringbyappendingpathcomponent:@"sql.db"]; int reslut= sqlite3_open([documentpath utf8string], &_sqldb); if(reslut==sqlite_ok){ nslog(@"数据库已被打开"); } } //通过数据库实例创建表 -(void)createtable{ //不带参数的sql语句 const char* sql="create table if not exists t_person (id integer primary key autoincrement,name text,age integer);"; char *error; //sqlite3_exec可以执行一切不带参数的sql语句。如果是带参数最好不用,防止sql注入漏洞攻击 int resutl= sqlite3_exec(_sqldb, sql, null, null, &error); if(resutl==sqlite_ok){ nslog(@"创建表成功"); } else{ nslog(@"创建表失败--》%s",error); } } //插入数据 -(void)insertdata{ //带参数的sql语句 "?"是带参数的占位符 const char * sql="insert into t_person(name,age) values(?,?);"; sqlite3_stmt *stmp; //在执行sql语句之前检查sql语句语法,-1代表字符串的长度 int result= 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 int result=sqlite3_step(stmp); //插入进行判断,要用sqlite_done来判断 if(result==sqlite_done){ nslog(@"插入成功"); } else{ nslog(@"插入失败") ; } } else{ nslog(@"插入sql语句有问题"); } } -(void)finddata{ char *sql="select id,name,age from t_person"; //查询做好用step执行 sqlite3_stmt *stmt; //检查sql语句的语法问题 int result= sqlite3_prepare_v2(_sqldb, sql, -1, &stmt, null); if(result==sqlite_ok){ while (sqlite3_step(stmt)==sqlite_row) { //查询的列是0开始 插入的列从1开始 // int xh=sqlite3_column_int(stmt, 0); int xh=sqlite3_column_int(stmt, 0); char * name=(char *)sqlite3_column_text(stmt, 1); int age=sqlite3_column_int(stmt, 2); nslog(@"xh=%i-->name=%s-->age=%i",xh,name,age); } } else{ nslog(@"查询sql语法有误"); } }
以上就是本文的全部内容,希望对大家的学习有所帮助。