必知的技术知识:FMDB基本操作

简介: 必知的技术知识:FMDB基本操作

1、以前使用数据库,因为一般就建立一张表,所以都是自己写代码创建,没用过fmdb,这次因为项目中涉及聊天模块,需要多张表格和数据库保存聊天记录


按照以前方法不好操作,就研究了下fmdb,发现确实挺方便的。FMDB下载地址:


2、导入FMDB文件,再导入libsqlite3.tbd依赖包。


//创建打开数据库


NSString path = 【self getDBPath:@"student"】;//如果名称为空 数据库断开时会删除


DDb = 【FMDatabase databaseWithPath:path】;


【self createTable:@"95230"】; //建表


【self insertDate:@"95230"】; //添加数据


【self updataWithTable:@"95230"】; //修改


【self deledataWith:@"95230"】; //删除


【self chaxunWith:@"95230"】; //查询


NSLog(@"%@/Documents",//代码效果参考:http://www.lyjsj.net.cn/wx/art_24153.html

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",@"19"】;


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",@"18"】;


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,@"小三",@"20",【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:0】;


NSString *DBPath = 【documentPath stringByAppendingPathComponent:curname】;


return DBPath;


}


注:FMDB写入图片数据NSData时候,图片转换成数据流用 UIImageJPEGRepresentation( img , float); 如果用 UIImagePNGRepresentation转的话,写入数据库时间会变长,


我5张图片没有压缩转 写入数据库时间需要花费1.5秒,而且是写入任何一个参数都要1.5秒。



=====>


O(∩_∩)O

相关文章
|
1月前
|
小程序 数据库
零基础开发小程序第六课-删除数据
零基础开发小程序第六课-删除数据
|
11天前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第二篇(函数)
MySQL数据库基础第二篇(函数)
|
1月前
|
SQL 存储 关系型数据库
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
198 0
|
9月前
|
存储 安全 开发工具
Git基础(概念、基本操作)+思维导图
Git基础(概念、基本操作)+思维导图
94 0
|
小程序 数据库
零基础开发小程序第六课-删除数据(二)
零基础开发小程序第六课-删除数据(二)
|
小程序
零基础开发小程序第六课-删除数据(一)
零基础开发小程序第六课-删除数据(一)
|
索引 Python
零基础Python教程043期 列表的增删改查,彻底学通序列基本操作
零基础Python教程043期 列表的增删改查,彻底学通序列基本操作
132 0
|
中间件
服务器开发- 牌和牌的基本操作
服务器开发- 牌和牌的基本操作
73 0
|
SQL 存储 Java
MySQL数据库,基础初学者必备知识
本文讲解:MySQL数据库基础初学者必备知识
|
关系型数据库 MySQL 数据库
FastAPI 学习之路(六十一)使用mysql数据库替换sqlite数据库
FastAPI 学习之路(六十一)使用mysql数据库替换sqlite数据库
FastAPI 学习之路(六十一)使用mysql数据库替换sqlite数据库