iOS开发9-iOS操作SQLite数据库增删改查

来源:互联网 发布:中国的阿拉伯之春 知乎 编辑:程序博客网 时间:2024/06/05 16:25

iOS开发9-iOS操作SQLite数据库增删改查


 代码下载(Xcode7.0.1)
 有问题请联系博主,邮箱:nathanlee1987@aliyun.com


1、创建并打开数据库、关闭数据库

//打开数据库-(void)openDB{    //sqlite3_open//打开数据库    //如果数据库存在,就打开;    //不存在,就创建再打开。    //第1个参数是数据库路径,第2个参数是数据库指针,调用数据库时使用    int result =  sqlite3_open(self.dataBasePath.UTF8String, &db);        if (result==SQLITE_OK)        NSLog(@"数据库打开成功");    else        NSLog(@"数据库打开失败");}//关闭数据库-(void)closeDB{        //关闭数据库    int result =  sqlite3_close(db);        if (result==SQLITE_OK)        NSLog(@"数据库关闭成功");    else NSLog(@"数据库关闭失败");}


2、创建表


//创建表-(void)createTable{    //1.准备sql语句  设置表名,字段,设置逐渐    NSString *sqlString=@"create table  if not exists myTable(m_id integer primary key autoincrement not null,m_name text,m_age integer) ";        //2.执行sql语句    int result = sqlite3_exec(db, sqlString.UTF8String, NULL, NULL, NULL);        if (result==SQLITE_OK)        NSLog(@"建表成功");    else NSLog(@"建表失败");    }



3、增-添加记录

//增-(void)insertWithName:(NSString*)name age:(NSInteger)age{         //步骤     //1.准备sql语句     //2.创建伴随指针     //3.预执行     //4.绑定参数     //5.执行     //6.关闭伴随指针            //1.准备sql语句    //这样很危险-sql注入的漏洞    //blob类型也无法插入    //NSString *s=[NSString stringWithFormat:@"insert into stu (s_name ,s_age) values (%@,%ld)",name,age];        //安全的方式    NSString *sqlString=@"insert into myTable (m_name ,m_age) values (?,?)";        //2.创建伴随指针    sqlite3_stmt *stmt=NULL;    //3.预执行//-1 整型最大值--多少数据    int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);        if (result==SQLITE_OK) {                NSLog(@"预执行正确");                //4.绑定参数        //第一个问号        sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);        //第二个问号        sqlite3_bind_int64(stmt, 2, age);//age NSInteger                //5.执行        if(sqlite3_step(stmt)==SQLITE_DONE)             NSLog(@"插入成功");        else NSLog(@"插入失败");            }    else NSLog(@"预执行错误");        //6.关闭伴随指针    sqlite3_finalize(stmt);    NSLog(@"关闭【添加】伴随指针");        /*     //不关闭伴随指针,关闭数据库会出错     2015-10-24 16:14:21.088 [3617:227363] 数据库打开成功     2015-10-24 16:14:21.090 [3617:227363] 预执行正确     2015-10-24 16:14:21.092 [3617:227363] 插入成功     2015-10-24 16:14:21.092 [3617:227363] 数据库关闭失败     */    }


4、删-删除记录

//删-(void)deleteWithName:(NSString*)name{    //步骤    //1.准备sql语句    //2.创建伴随指针    //3.预执行    //4.绑定参数    //5.执行    //6.关闭伴随指针        //1.准备sql语句    NSString *sqlString=@"delete from myTable  where m_name = ?";    //2.创建伴随指针    sqlite3_stmt *stmt=NULL;        //3.预执行    int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);        if (result==SQLITE_OK) {                NSLog(@"预执行成功");                //4.绑定参数        sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);                //5.执行        if (sqlite3_step(stmt)==SQLITE_DONE)            NSLog(@"执行成功");        else NSLog(@"执行失败");            }    else NSLog(@"预执行失败");        //6.关闭伴随指针    sqlite3_finalize(stmt);    NSLog(@"关闭【删除】伴随指针");}




5、改-修改数据


//改-(void)updateWithAge:(NSInteger)age{    //1.准备sql语句    //2.伴随指针    //3.预执行    //4.绑定参数    //5.执行    //6.关闭伴随指针         //1.准备sql语句    NSString *sqlString=@"update myTable set m_age = 100 where m_age = ?";        //2.伴随指针    sqlite3_stmt *stmt=NULL;        //3.预执行    int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);        if (result==SQLITE_OK) {               NSLog(@"预执行成功");                //4.绑定参数        sqlite3_bind_int64(stmt, 1, age);                //5.执行        if (sqlite3_step(stmt)==SQLITE_DONE)            NSLog(@"执行成功");        else NSLog(@"执行失败");             }    else NSLog(@"预执行失败");        //6.关闭伴随指针    sqlite3_finalize(stmt);    NSLog(@"关闭【修改】伴随指针");    }


6、查-查找数据

//查-(void)selectWithName:(NSString*)name{    //1.sql语句    //2.伴随指针    //3.预执行    //4.绑定参数    //5.执行(N次,因为有可能有N条数据符合条件)    //6.关闭伴随指针       //1.sql语句 //尽量不要用 select *  除非数据库表的字段太多    NSString *sqlString=@"select m_id,m_name,m_age from myTable where m_name=?";        //2.伴随指针    sqlite3_stmt *stmt=NULL;        //3.预执行    int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);        if (result==SQLITE_OK) {                NSLog(@"语句正确");                 //4.绑定参数        sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);                 //5.执行(N次,因为有可能有N条数据符合条件)//循环判断是否还有符合查询条件的数据        while (sqlite3_step(stmt)==SQLITE_ROW) {                        int m_id = sqlite3_column_int(stmt, 0);            NSLog(@"m_id=%d",m_id);                        NSString * m_name =[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];            NSLog(@"m_name=%@",m_name);                        int m_age = sqlite3_column_int(stmt, 2);            NSLog(@"m_age=%d",m_age);                    }            }    else NSLog(@"语句错误");        //6.关闭伴随指针    sqlite3_finalize(stmt);    NSLog(@"关闭【查询】伴随指针");}





  代码下载(Xcode7.0.1)
 有问题请联系博主,邮箱:nathanlee1987@aliyun.com
著作权声明:本文由http://my.csdn.net/Nathan1987_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
1 0
原创粉丝点击