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

相关文章
iOS 常见触发离屏渲染场景及优化方案总结
iOS 常见触发离屏渲染场景及优化方案总结
1104 0
iOS 常见触发离屏渲染场景及优化方案总结
iOS 分享 第三方登录 Twitter 注册应用以及读写权限
iOS 分享 第三方登录 Twitter 注册应用以及读写权限
586 0
iOS八种内存泄漏问题
循环引用(Retain Cycle) 先简单说一下什么是循环引用(retain cycle) ​假设我们有两个实例A和B,B是A的一个strong型的property,则B的引用计数是1,当A的需要释放的时候,A则会调用[B release]来释放B,B的引用计数则减为0,释放。
2359 0
C++框架设计中实现可扩展性的方法
在软件开发中,可扩展性至关重要,尤其对于C++这样的静态类型语言。本文探讨了在C++框架设计中实现可扩展性的方法:1) 模块化设计降低耦合;2) 使用继承和接口实现功能扩展;3) 通过插件机制动态添加功能;4) 利用模板和泛型提升代码复用;5) 遵循设计原则和最佳实践;6) 应用配置和策略模式以改变运行时行为;7) 使用工厂和抽象工厂模式创建可扩展的对象;8) 实现依赖注入增强灵活性。这些策略有助于构建适应变化、易于维护的C++框架。
757 2
提升数据分析效率:DataWorks在企业级数据治理中的应用
【8月更文第25天】本文将探讨阿里巴巴云的DataWorks平台如何通过建立统一的数据标准、规范以及实现数据质量监控和元数据管理来提高企业的数据分析效率。我们将通过具体的案例研究和技术实践来展示DataWorks如何简化数据处理流程,减少成本,并加速业务决策。
850 54
Flutter笔记 - ListTile组件及其应用
Flutter笔记 - ListTile组件及其应用
600 0
Android 中使用spinner实现下拉列表的两种方法和getItemAtPosition()方法的使用
Android 中使用spinner实现下拉列表的两种方法和getItemAtPosition()方法的使用
353 0
应用研发平台EMAS多渠道打包。 aliyun-emas-services 要怎么配置?
【1月更文挑战第9天】【1月更文挑战第43篇】应用研发平台EMAS多渠道打包。 aliyun-emas-services 要怎么配置?
346 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问