必知的技术知识: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

相关文章
|
3月前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
151 0
|
7月前
|
SQL 存储 关系型数据库
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
395 0
|
存储 Python
Python程序开发——Python实现可增删改查的员工管理系统
Python程序开发——Python实现可增删改查的员工管理系统
Python程序开发——Python实现可增删改查的员工管理系统
|
SQL C# 数据库
推荐一个Dapper扩展CRUD基本操作的开源库
推荐一个Dapper扩展CRUD基本操作的开源库
93 0
|
存储 安全 开发工具
Git基础(概念、基本操作)+思维导图
Git基础(概念、基本操作)+思维导图
132 0
|
中间件
服务器开发- 牌和牌的基本操作
服务器开发- 牌和牌的基本操作
95 0
|
移动开发 Java Unix
python初学者指南:文件操作重点(基本操作、文件模式)
python初学者指南:文件操作重点(基本操作、文件模式)
284 0
python初学者指南:文件操作重点(基本操作、文件模式)
|
Windows
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块(2)
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块
151 0
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块(2)
|
数据库
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块(3)
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块
164 0
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块(3)
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块(1)
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块
143 0
jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块(1)