iOS开发中sqlite数据库的基本使用

来源:互联网 发布:相册软件哪个好 编辑:程序博客网 时间:2024/05/16 13:44


在开发中,我们都会听说过”数据库持久化“这一词。怎么做到数据的持久化呢,无非就是把一些数据保存起来,在应用关闭后(不是卸载),下次再次启动应用程序时能够读取到上次保存的数据。这样就做到了数据的持久化。在iOS开发中,对数据的持久化有写文件,归档,NSUserDefaults ,SQLite,coreData。本博文主要介绍SQLite的基本使用。有时间再对coreData做基本的介绍。对于写文件,归档,NSUserDefaults就不做介绍。至于为什么要讲这个先,做过iOS开发都应该清楚,SQLite用得比较多,虽然苹果也有coreData,但coreData不如SQLite量级轻。苹果的coreData数据库做了一层包装,有自己的规则,在使用时会默认创建一些东西。SQLite是真正轻量级的关系型数据库。


个人感觉,iOS前段开发用到的数据库并不是很多,跟后台当然是没发比。除非项目要求,无非就是保存一些界面数据,在应用刚启动,由于网络缓慢时不至于界面上一片空白。在用户体验上好一些。其实做前端开发在数据库上熟悉数据库的 “增”,“删”,“改”,“查”的使用,基本也就够了。


既然讲到SQLite数据库,先爆料一个第三方 FMDB 。其实这里讲SQLite也是主要讲这个第三方的使用。我们并非需要专门的操作数据库,只要会使用,能到达目的就好(纯属个人见解)。FMDB在上可以下载。

先对SQLite的增删改查的基本语法做个简单介绍。接着讲解FMDB的使用。

SQL基本语法

1.修改操作关键字

(1)增:insert

(2)删:delete

(3)改:update

(4)查:select

 

2.常使用关键字

(1)在哪里执行操作:from+数据表

(2)加在哪个位置into +数据表(与insert一起使用)

(3)条件语句:where

 

3.修饰关键字

(1)top +条数(前面十条数据)

(2)order by + 字段名 (按照这个名来排序)

(3)[desc]升降序标示

(4)like (与这个字段相似)

(5)in+多个值(选取这几个值)

(6)between +两个值(两个值之间的所有值)


FMDB的使用。

二话不说,先将下下来的FMDB拖到项目工程中。然后添加二进制库     sqlite3.dylib(.tdb)


使用方法(里面会有SQL语法,也是必须的,因为得写SQL语句啊。这里不说了(有的东西自己学习自己摸索出来的也不知道怎么说得专业点。),要想  “增删改查”?  直接拷代码呗)

1)创建一个数据库

- (void)createDataBase{

    //获取沙盒路径

    //确定数据库路径

    NSString*filePath = [NSStringstringWithFormat:@"%@/Documents/data.sqlite",NSHomeDirectory()];

    NSLog(@"%@",filePath);

    //创建数据库

    /*

     如果该文件路径已经有这个db,那么就直接打开

     如果没有db,那么就创建一个新的db,然后打开

     */

    self.dataBase = [[FMDatabasealloc]initWithPath:filePath];

    //把数据库打开

    if (self.dataBase.open) {

        NSLog(@"数据库打开成功");

    }

}

 

2)创建一个表单

- (void)createTable{

    //通过sql语句创建表单

    //sql语句后接表单的名称(studentInfo)

    //表单名后面接表单结构

    NSString*sql = @"CREATE TABLE IF NOT EXISTSstudentInfo(sid INTEGER,name varchar(32),age varchar(32),gendervarchar(32))";

    //通过dataBase使用sql语句

    BOOLisCreate = [self.dataBaseexecuteUpdate:sql];

    if(isCreate) {

        NSLog(@"创建表单成功");

    }

}

 

方法一:insert插入数据

- (void)insertData{

    //sql插入语句INSERT INTO

    //sql语句后接表单名(studentInfo)

    //设置插入语句的表单结构

    //设置表单结构的值(value)

    NSString*sql = @"INSERT INTOstudentInfo(sid,name,age,gender)VALUES(?,?,?,?)";

    NSString*sid = @"1";

    BOOLisInsert = [self.dataBaseexecuteUpdate:sql,sid,@"hjh",@"10",@"0"];

    if(isInsert) {

        NSLog(@"插入sql数据成功");

    }

}

 

方法二:update修改表单中的数据

- (void)updateData{

制作一个修改namesql语句,使用SQL修改语句UPDATE,SQL语句后跟表单名,SET设置需要修改的属性,WHERE提供筛选的条件

sid条件使用的字段名(sid等于某个值的时候,就进行更换)

    NSString*sql = @"UPDATE studentInfo SET name = ? WHEREsid = ?";

    BOOLisUpdate = [self.dataBaseexecuteUpdate:sql,@"hjj",@"1"];

    if(isUpdate) {

        NSLog(@"修改数据成功");

    }

}

 

方法三:delete删除操作

- (void)deleteData{

制作一个删除操作的sql语句,sql语句后跟随表单名,WHERE添加删除的条件,sid等于某个值的时候,删除掉

    NSString*sql = @"DELETE FROM studentInfo WHERE sid =?";

    BOOLisDelete = [self.dataBaseexecuteUpdate:sql,@"1"];

    if(isDelete) {

        NSLog(@"删除该数据成功");

    }

}

 

方法四:查询数据表中的数据

- (void)selectData{

    //sql的查询语句

    NSString*sql = @"SELECT * FROM studentInfo WHERE sid =?";

    //通过FMResultSet获取查询回来的数据

    FMResultSet*result = [self.dataBaseexecuteQuery:sql,@"1"];

    //获取result集合中的下一个元素作为判断条件

    //相当于是一个for循环把result中的所有元素都获取出来

    while([result next]) {

        //获取数字类型的元素属性

        NSIntegersid = [resultintForColumn:@"sid"];

        //获取字符类型的元素属性

        NSString*name = [resultstringForColumn:@"name"];

        NSString*age = [resultstringForColumn:@"age"];

        NSString*gender = [resultstringForColumn:@"gender"];

        NSLog(@"sid = %ld,name = %@,age = %@, gender = %@",(long)sid,name,age,gender);

    }

}

 

.关闭数据库

- (void)closeDataBase{

    //关闭数据库

    BOOLisClose = [self.dataBaseclose];

    if(isClose) {

        NSLog(@"关闭数据库成功");

    }

}




0 0
原创粉丝点击