FMDB基本操作
1、以前使用数据库,因为一般就建立一张表,所以都是自己写代码创建,没用过fmdb,这次因为项目中涉及聊天模块,需要多张表格和数据库保存聊天记录
按照以前方法不好操作,就研究了下fmdb,发现确实挺方便的。FMDB下载地址:https://github.com/ccgus/fmdb。
2、导入FMDB文件,再导入libsqlite3.tbd依赖包。
//创建打开数据库
NSString *path = [self getDBPath:@"student"];//如果名称为空 数据库断开时会删除
DDb = [FMDatabase databaseWithPath:path]; [self createTable:@""]; //建表
[self insertDate:@""]; //添加数据
[self updataWithTable:@""]; //修改
[self deledataWith:@""]; //删除
[self chaxunWith:@""]; //查询 NSLog(@"%@/Documents",NSHomeDirectory()); //模拟器运行时 打开Documents查看数据库文件
//查询数据库
-(void)chaxunWith:(NSString *)tabname
{
if ([DDb open]) {
// NSString *sql = [NSString stringWithFormat:@"select * from '%@' where age = '%@'",tabname,@"18"];//
NSString *sql = [NSString stringWithFormat:@"select * from '%@'",tabname];
FMResultSet * rs = [DDb executeQuery:sql];
while ([rs next]) {
NSString * name = [rs stringForColumn:@"name"];
int age = [rs intForColumn:@"age"];
NSData *imgdata = [rs dataForColumn:@"image"];
NSLog(@"%@ - %i",name,age);
}
[DDb close];
}
} //删除数据
-(void)deledataWith:(NSString *)tabname
{
if ([DDb open]) {
NSString *sql = [NSString stringWithFormat:@"delete from '%@' where %@ = '%@'",tabname,@"age",@""];
BOOL dele = [DDb executeUpdate:sql];
if (!dele) {
NSLog(@"delete fail");
}
[DDb close];
}
} //修改数据
-(void)updataWithTable:(NSString *)tabname
{
if ([DDb open]) {
NSString *sql = [NSString stringWithFormat:@"update '%@' set %@ = '%@' where age = '%@'",tabname,@"name",@"张86",@""];
BOOL update =[DDb executeUpdate:sql];
if (!update) {
NSLog(@"update fail");
}
[DDb close];
}
} //添加数据
-(void)insertDate:(NSString *)tabname
{
if ([DDb open])
{
NSString *bb = [NSString stringWithFormat:@"INSERT INTO '%@' (name, age, image) VALUES (?,?,?)",tabname];
// UIImage *img = [UIImage imageNamed:@"test"];
// NSData *imgdata = UIImagePNGRepresentation(img);
BOOL insert = [DDb executeUpdate:bb,@"小三",@"",[NSData data]];
if (!insert) {
NSLog(@"insert fail");
}
[DDb close];
}
}
//创建数据库表格
-(void)createTable:(NSString *)tabname
{
if ([DDb open]) {
//判断表名是否为纯数字
NSString *sqlCreateTable = [NSString stringWithFormat:@"create table if not exists '%@' (id INTEGER PRIMARY KEY AUTOINCREMENT, name text,age integer, image blob)",tabname]; BOOL res = [DDb executeUpdate:sqlCreateTable];
if (!res) {
NSLog(@"创建表格失败");
}
[DDb close];
}
} //创建数据库
-(NSString *)getDBPath:(NSString *)curname
{
curname = [NSString stringWithFormat:@"%@.sqlite",curname];
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:];
NSString *DBPath = [documentPath stringByAppendingPathComponent:curname];
return DBPath;
}
注:FMDB写入图片数据NSData时候,图片转换成数据流用 UIImageJPEGRepresentation( img , float); 如果用 UIImagePNGRepresentation转的话,写入数据库时间会变长,
我5张图片没有压缩转 写入数据库时间需要花费1.5秒,而且是写入任何一个参数都要1.5秒。
>>>>> 其他比较详细的FMDB使用介绍。
=====> http://m.blog.csdn.net/article/details?id=7204625
O(∩_∩)O
FMDB基本操作的更多相关文章
- FMDB 的基本操作
在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包 FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码. FMDB常用类: F ...
- fmdb 数据库的基本操作
/** * 创建表 */ - (void)createTable { //1.初始化数据库对象 并且 2.打开数据库 BOOL isOpenSuccess = [self.database open ...
- FMDB的一些基本操作小结
http://blog.csdn.net/iunion/article/details/7204625 仅供自己记录使用, h文件 #import <Foundation/Foundation. ...
- FMDB 排它锁
-------------------------------------基本操作------------------------------------- #import "ViewCon ...
- 我为什么用 SQLite 和 FMDB 而不用 Core Data
凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要.更重要的是,不值得花时间和 ...
- FMDB 二次封装工具类,让你快速学会封装,集成数据库
来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线 ...
- 谈谈用SQLite和FMDB而不用Core Data
谈谈用SQLite和FMDB而不用Core Data 发布于:2014-04-22 11:22阅读数:4235 凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他 ...
- 从FMDB到WCDB、微信团队怎么说?
WCDB背景 自己初次见到WCDB是微信开发团队公众号在今年五月份推送的一篇文章中(开发者团队的微信号上面图片中有,值得大家关注一下),那时候就说在筹备着WCDB的开源,觉得很是新奇,在两个多月前WC ...
- 一行代码实现FMDB的CURD操作
上次实现FMDB的CURD基本操作后,用在项目里,每个实体类都要写SQL语句来实现创建表和CURD操作,总觉得太麻烦,然后就想着利用反射和kvc来实现一个数据库操作的基类继承一下,子类只需要继承,然后 ...
随机推荐
- A. Nephren gives a riddle
What are you doing at the end of the world? Are you busy? Will you save us? Nephren is playing a gam ...
- zabbix(2-server-agent)
注意:以下步骤都是在LAMP配置之后进行的. 关于LAMP环境的简单快速搭建,见博客:http://afterdawn.blog.51cto.com/7503144/1923139 下面开始介绍在Ce ...
- 学习C#(一)
赶紧好好学学自己的C#,,要不然要给做的东西说拜拜了,,,时间紧迫,,,真担心会食言..................... 在C#中以为只要类有构造方法,,,,原来结构也有 using Syste ...
- php连接mysql...mysqli和mysql
mysql_connect()这一系列函数已经不推荐使用了,不安全. <?php $con = mysql_connect('localhost','root','');// 选择连接数据库系统 ...
- -bash: start-all.sh: 未找到命令
解决方案:以root权限进入,找到hadoop安装的目录,进入sbin目录下 输入命令#start-all.sh 出现错误:-bash: start-all.sh: 未找到命令 百度了一下:原来需要输 ...
- 20155206 Exp5 MSF基础应用
20155206 Exp5 MSF基础应用 基础问题 . 用自己的话解释什么是exploit,payload,encode . exploit:这个词本身只是利用,但是它在黑客眼里就是漏洞利用.有漏洞 ...
- Aspose.Cells.dll的用法
public void OutExcel() { #region WorkbookDesigner designer = new WorkbookDesigner(); Worksheet sheet ...
- [FQ]Tor + Chrome + PAC 尝试 FQ
记录一次比较成功的FQ经历 1.从Tor官网下载最新的Tor browser,速度较慢可以从文末给出的链接中下载. 2.安装Tor browser. 3. Tor网络设置 3.1 那个描述与你的情况最 ...
- Luogu T24242 购物券Ⅰ(数据已加强)
这是一道比赛时的题目,但由于我没报名,所以浪费了一个大好的切水题的机会. 是经典的meet in middle(折半搜索)的模板题,但是之前一直没找到这种题目,今天终于看到了. 由于m的范围极大,因此 ...
- [Oracle]查看数据是否被移入 DataBuffer 的方法
查看数据是否被移入 DataBuffer 的方法: 例如:表名为 tabxxx, 用户为U2: SQL> grant dba to u2 identified by u2;SQL> con ...