博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库类库FMDB
阅读量:5035 次
发布时间:2019-06-12

本文共 3486 字,大约阅读时间需要 11 分钟。

  下载地址:https://github.com/tryingx/fmdb-master

前言

  SQLite () 是一个轻量级的关系数据库。iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将SQLite API进行封装的库,而FMDB () 则是开源社区中的优秀者。

第一步 引入:sqlite3的类库 

第二步 引入:FMDB的类库

主要包括以下几方面

  引入文件结束以后就可以使用了,使用很简单

第一步 建立一个数据库类

1 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; // 获取document文件的路径   2 /**  3  *  强调一点就是对于数据库的名:我们可以用"" 或用 NULL   4  *  5  *  An empty string (@""). An empty database is created at a temporary location. This database is deleted with the FMDatabase connection is closed.  6  也就是说如果我们使用(@""),会创建一个临时数据库,当我们数据库关闭后会自动删除  7  NULL. An in-memory database is created. This database will be destroyed with the FMDatabase connection is closed.  8  在内存中给你创建一个数据库  9  */  10 NSString *dbPath = [docPath stringByAppendingPathComponent:@"student.sqlite"];  11 NSLog(@"%@", dbPath); // 拼接字符串  12 FMDatabase *dataBase = [FMDatabase databaseWithPath:dbPath];  13 [dataBase open];  14 // 用来判断数据库打开是否成功  15 if (![dataBase open]) {  16     NSLog(@"error");  17 }

第二步 就是执行一些常用的操作

常用操作:

1.创建一个表

NSString *sql = @"CREATE TABLE student(_id Integer primary key, name text, password text, email text)";  BOOL isCreateTable = [dataBase executeStatements:sql];  NSLog(@"%d", isCreateTable );

2.插入数据

NSString *sqlInsert = @"INSERT INTO student (name, password, email) values ('宝贝', '1232', '3343243')";  BOOL isInsertOK = [dataBase executeStatements:sqlInsert];  NSLog(@"%d", isInsertOK );

 

3.批量的创建表和插入数据

NSString *sql1 = @"create table bulktest1 (id integer primary key autoincrement, x text);"  "create table bulktest2 (id integer primary key autoincrement, y text);"  "create table bulktest3 (id integer primary key autoincrement, z text);"  "insert into bulktest1 (x) values ('XXX');"  "insert into bulktest2 (y) values ('YYY');"  "insert into bulktest3 (z) values ('ZZZ');";  [dataBase executeStatements:sql1];

  当然也可以通过数组的方式插入数据

NSArray *stuentInfo = [NSArray arrayWithObjects:@"大傻瓜",@"213",@"123456@qq.com", nil nil];  [dataBase executeUpdate:@"insert into student (name, password, email) values (?,?,?)" withArgumentsInArray:stuentInfo];

4.匹配的方式插入数据

NSString *sqlInsert = @"INSERT INTO student (name, password, email) values (?,?,?)";  BOOL flag = [dataBase executeUpdate:sqlInsert, @"大宝贝", @"123", @"654321@qq.com"];  NSLog(@"%d", flag);

5.1.查询所有数据

FMResultSet *result = [dataBase executeQuery:@"SELECT * FROM student"];  [self showInfo:result];  [result close];  

 

- (void)showInfo:(FMResultSet *)result  {      while ([result next]) {          int _id = [result intForColumnIndex:0];          NSLog(@"id : %d", _id);          NSString *name = [result stringForColumnIndex:1];          NSLog(@"name : %@", name);          NSString *password = [result stringForColumnIndex:2];          NSLog(@"password : %@", password);          NSString *email = [result stringForColumnIndex:3];          NSLog(@"email : %@", email);      }  }

5.2.查询指定信息

NSString *sqlInsert = @"SELECT * from  student where name = %@";  FMResultSet *result = [dataBase executeQueryWithFormat:sqlInsert, @"宝贝"];  NSLog(@"%@", result);  [self showInfo:result];

6.执行删除操作

NSString *sql = @"delete from student where name = ?";  [dataBase executeUpdate:sql,@"宝贝"];

  执行更新操作的步骤和删除操作一样,只不过sql语句不同而已

   重要注意事项是:1 使用完数据库后记得关闭

                             2 查询结果完场后result也得记得关闭

  以上就是FDBM的一些常用操作,具体用法访问https://github.com/tryingx/fmdb 

转载于:https://www.cnblogs.com/tryingx/articles/3721033.html

你可能感兴趣的文章
leetcode_question_73 Set Matrix Zeroes
查看>>
一个面试题。。。
查看>>
用Scrapy爬虫下载图片(豆瓣电影图片)
查看>>
称职QA经理必备的13项技能
查看>>
使用Dreamweaver开发php
查看>>
使用 CSS3 实现超炫的 Loading(加载)动画效果
查看>>
Largest Submatrix of All 1’s(思维+单调栈)
查看>>
Chinese Zodiac (水题)
查看>>
js浮点数的计算
查看>>
python 处理excel 进程无法退出的问题
查看>>
15. SSH 远程
查看>>
git命令简洁版
查看>>
SQL SERVER2008跟踪标志
查看>>
Tomcat WEB搭建+Nginx负载均衡动静分离+DNS解析的实验
查看>>
构建配置 ProGuard Shrink 混淆和压缩
查看>>
SVN中trunk,branches,tags用法详解【转】
查看>>
【HEVC帧间预测论文】P1.3 Fast Inter-Frame Prediction Algorithm of HEVC Based on Graphic Information...
查看>>
linux crontab 保证php守护进程运行
查看>>
水晶报表填充.Net Objects数据源
查看>>
C++中类的内存结构解析
查看>>