数据库使用之第三方库 FMDB

系统 1490 0

下载 FMDB

 

1. 引进 sqlite3 工具箱,在要进行数据库操作的类里引进头文件 : 因为第三方软件同样是使用  sqlite 工具箱来操作数据库的,只不过是简化了操作,让语法更接近 OC 的语法, 而不需要使用过多的 C 语法;

      #import <sqlite3.h>
    

2. 将第三方库加载进工程:方法是直接将 FMDB 的源文件拖拽进工程即可;

3. 使用第三方库访问数据库

当然了,对于高手而言,对第三方库进行了解后,上手是很快的,对于小白,只能一步一步走啦。

3.1 指定数据库的存储路径,一般都是在沙盒根目录下地 Documents 文件夹下,文件的后缀名是 .sqlite:如  db_students.sqlite;

  NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: @" Documents/db_student.sqlite " ];  

3.2 先创建一个 FMDatabase 的对象 *_db;

  FMDatabase *_db;  

使用前要先初始化

  _db = [[FMDatabase alloc] initWithPath:filePath];  

看它的初始化方法:在初始化方法里没有做什么多余的操作,除了指定数据库存储的路径外,没有其他操作,0x00 是一个十六进制的地址,代表 nil(或者说 NULL )

数据库使用之第三方库 FMDB

创建并打开数据库:

[_db open];

这句代码的作用有两个:

1)若数据库不存在,则创建并打开;

2)若数据库已经存在,则打开数据库;

也许你还记得:sqlite3_open(path, &_db);

这两句代码的作用是一样的,只不过前者更接近 OC 的语法,其实质还是通过后者操作数据库的。

3.3 创建表

      
        if
      
       (![_db tableExists:
      
        @"
      
      
        tb_students
      
      
        "
      
      
        ])

{

     [_db executeUpdate:
      
      
        @"
      
      
        create table tb_students (ID integer primary key not null unique, name text, age integer)
      
      
        "
      
      
        ];

} 
      
      
        //
      
      
         先调用方法,判断表是否已经存在,若不存在则创建表
      
    

整个过程则为:

      NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:
      
        @"
      
      
        Documents/db_student.sqlite
      
      
        "
      
      
        ];

_db 
      
      =
      
         [[FMDatabase alloc] initWithPath:filePath];


      
      
        if
      
      
         ([_db open])

{

   
      
      
        if
      
       (![_db tableExists:
      
        @"
      
      
        tb_students
      
      
        "
      
      
        ])

   {

       [_db executeUpdate:
      
      
        @"
      
      
        create table tb_students (ID integer primary key not null unique, name text, age integer)
      
      
        "
      
      
        ];

    }

}

[_db close]; 
      
      
        //
      
      
         当对数据库的操作结束后不要忘记关闭数据库
      
    

3.4 插入、删除、更新、查询表的操作

第一步:打开数据库  

第二部:数据库操作

第三部:关闭数据库

需要注意的是,在进行对表的插入、删除、更新时,调用的方法是  - (BOOL)executeUpdate:(NSString*)sql, ...;  

看示例:

      - (
      
        void
      
      )insertTable:(ZYStudent *
      
        )stu

{

    
      
      
        if
      
      
         ([_db open])

    {

        [_db executeUpdate:
      
      
        @"
      
      
        insert into tb_students (name, age) values (?, ?)
      
      
        "
      
      
        , stu.name, [NSNumber numberWithInt:stu.age]];

    } 
      
      
        //
      
      
         这里需要注意的是:替换 sql 语句里的 ?,不能直接使用基本类型的数据,而是需要将基本类型转换为 对象类型,符合 OC 的语法
      
      
            

    [_db close];

}
      
    

对表进行查询时,调用的方法是:  - (FMResultSet *)executeQuery:(NSString*)sql, ...;  

原因大概也都知道:插入、删除、更新操作时,主要表现出来的变化是数据表,受影响的时表中的行(即一条或几条记录),而查询操作不同,进行查询操作的目的就是要获得表中的数据,那么就应该将获得数据存储,这样就新引用了一个概念:结果集(ResultSet)。

在查询操作里:可以简单的将理解为结果集是用来接收查询数据的,然后就可以将数据从结果集取出来,通过一定手段展示出来。

      - (
      
        void
      
      
        )selectTable

{

    NSMutableArray 
      
      *array =
      
         [NSMutableArray array];

    
      
      
        if
      
      
         ([_db open])

    {

        FMResultSet 
      
      *rs = [_db executeQuery:
      
        @"
      
      
        select * from tb_students
      
      
        "
      
      
        ];

        
      
      
        while
      
      
         ([rs next])

        {

            ZYStudent 
      
      *stu =
      
         [[[ZYStudent alloc] init] autorelease];

            stu.ID 
      
      = [rs intForColumnIndex:
      
        0
      
      
        ];

            stu.name 
      
      = [rs stringForColumnIndex:
      
        1
      
      
        ];

            stu.age 
      
      = [rs intForColumnIndex:
      
        2
      
      
        ];

            [array addObject:stu];

        }

    }

    [_db close];

    NSLog(
      
      
        @"
      
      
        ________%@
      
      
        "
      
      
        , array);

}
      
    

 

数据库使用之第三方库 FMDB


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论