iOS:第三方数据库文件FMDB的使用

简介:

第三方数据库FMDB

•FMDB的使用:在sqlite的基础上,将sqlite中的函数进行封装产生的一个数据库文件。
–FMDB的好处是对基本C库的封装,方便使用。同时还提供了多线程操作数据库带来的读脏数据等问题的方法。
–框架地址:https://github.com/ccgus/fmdb
–FMDB有三个主要的类

FMDatabase:对象就代表一个单独的SQLite数据库用来执行SQL语句

FMResultSet:使用FMDatabase执行查询后的结果集

FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的
 
 
对数据库所有的操作只需下面的方法即可:
查询语句:- (FMResultSet *)executeQuery:(NSString*)sql, ...    

                    - (BOOL)next;

                    -{type}ForColumnIndex:(int)columnIdx

创建、插入、修改等等语句:- (BOOL)executeUpdate:(NSString*)sql, ...
 

执行SQL语句:

<1>使用:(需要FMDatabase *db成员变量)
     创建或打开:FMDataBase类

self.db = [FMDatabase databaseWithPath:fileName];  //创建数据库

[self.db open];//打开数据库

[self.db close]; //关闭数据库

//对数据库进行插入、修改的操作

[self.db executeUpdate:@“CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT,age INTEGER)”]; 

[self.db executeUpdate:@"INSERT INTO t_student(name , age) VALUES(?, ?);", @"xuneng", @(10)];

[self.db executeUptate:@"update t_student set name = 'lisi' where age = @(10)"]; 

<2>查询:FMResultSet类(数据取出完全后,不需要再去关闭结果集,当新的结果集产生,或者其数据库关闭时,会自动关闭。)

        // 1.查询

        FMResultSet *set = [self.db  executeQuery:@"SELECT * FROM t_student;"];  //返回结果集

       // 2.取出数据

       while ([set next])

       {      

   // 取出姓名 

        NSString *name = [set stringForColumnIndex:1];

  // 取出年龄    

        int age = [set intForColumnIndex:2];

         NSString *name = [set stringForColumn:@"name"];

         int age = [set intForColumn:@"age"];

         NSLog(@"name = %@, age = %d", name, age);

}

创建数据库并进行增删改查的操作举例如下:

1、首先导入sqlite本地数据库和第三方数据库FMDB

     

 

     

 

2、在UIViewController类中对数据库表进行增删该查操作如下:

《1》数据库路径

    NSArray *dics = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *dbPath = [[dics lastObject] stringByAppendingPathComponent:@"user.db"];

 

《2》 创建数据库

    self.db = [FMDatabase databaseWithPath:dbPath];

 

《3》打开数据库

    if(![self.db open])

    {

           return; //打开数据库失败

    }

 

 《4》创建数据库表

    if(![self.db executeUpdate:@"create table if not exists user (ID integer primary key autoincrement,name text,password text)"])

    {

        return; //创建数据库表失败

    }

 

《5》插入数据

    if(![self.db executeUpdate:@"insert into user (name,password) values('admin','123456')"])

    {

        return; //插入数据失败

    }

 

《6》修改数据

    if(![self.db executeUpdate:@"update user set name = 'zhangsan' where ID = 2"])

    {

        return; //修改数据失败

    }

  

《7》获取结果集

    FMResultSet *resultSet = [self.db executeQuery:@"select * from user"];

 

《8》遍历结果集,取出数据

    while ([resultSet next])

    {

        int ID = [resultSet intForColumnIndex:0];

        NSString *name = [resultSet stringForColumnIndex:1];

        NSString *password = [resultSet stringForColumnIndex:2];

        NSLog(@"ID:%d,name:%@,password:%@",ID,name,password);

    }

 

《8》//关闭数据库

    [self.db close];

 

演示结果如下:

2015-09-21 21:44:38.640 第三方数据库FMDB[4207:296060] ID:1,name:admin,password:123456
2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:2,name:zhangsan,password:123456
2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:3,name:admin,password:123456
2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:4,name:admin,password:123456
2015-09-21 21:44:38.641 第三方数据库FMDB[4207:296060] ID:5,name:admin,password:123456

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4827381.html,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Kubernetes 关系型数据库 MySQL
ChaosBlade常见问题之数据库进行故障注入报错ibdata1文件异常如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
26 1
|
2月前
|
监控 关系型数据库 数据库
OceanBase数据库常见问题之文件存在但是数据库提示文件不存在如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
2月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
42 0
|
1月前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
1月前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
2月前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
19 0
|
3月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
|
3月前
|
Web App开发 Go iOS开发
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)|社区征文
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)|社区征文
|
4月前
|
Web App开发 Go iOS开发
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)
|
14天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。