fmdb(FMDatabase) 数据库总结
这段时间公司在做一个新的应用,用到了数据库。在网上找了一些资料,最后决定用fmdb来做。主要是用起来比较简单,适合刚接触数据库这方面的人。
一、步 首先是创建数据库:
+(NSString*)filePath:(NSString *)fileName
{
NSString *path=NSHomeDirectory();
//拼接路径Library/Caches
path=[path stringByAppendingPathComponent:@"Library/Caches"];
NSLog(@"path=%@",path);
NSFileManager *fm=[NSFileManager defaultManager];
//检查指定的缓存目录是否存在
if ([fm fileExistsAtPath:path]) {
//检查要保存的文件名是否合法
if (fileName&& [fileName length]!=0) {
//拼接全路径
path=[path stringByAppendingPathComponent:fileName];
}
}
else{
NSLog(@"缓存目录不存在");
}
return path;
}
-(id)init
{
DataItem *item = [[DataItem alloc] init];
NSLog(@"090909090==%@",item.destination);
if (self=[super init]) {
//实例化第三方数据库操作类对象
//如果user.db文件不存在就创建新的
//存在就直接使用
fmdb=[[FMDatabase databaseWithPath:[Database filePath:@"user.db"]] retain];
//尝试打开数据库
if ([fmdb open]) {
//创建数据表
[self createTable];
}
}
return self;
}
二、 创建数据库表 需要建多个表所以用一个数组来保存建表语句,然后遍历数组执行建表语句
NSArray *reportinfoArray = [NSArray arrayWithObjects:@"CREATE TABLE IF NOT EXISTS report_info (report_id integer Primary Key Autoincrement,report_name Varchar(1024) DEFAULT NULL,user_id integer DEFAULT NULL“,nil];
以report_id为自增长的主建 在建表语句中将其声明为主建,在表的插入过程中 repord_id回从1开始自动增长不需要对其进行赋值。
for (NSString *sql in reportinfoArray) {
//执行sql语句
//创建表,增,删,改都用这个方法
if ([fmdb executeUpdate:sql]) {
NSLog(@"已创建");
}
else{
NSLog(@"创建表失败:%@",[fmdb lastErrorMessage]);;
}
}
三,插入 可一条一条插入也可批量插入
-(void)insertItem:(DataItem *)item
{
if ([self existsItem:item]) {
return;
}else{
NSString *sql=[NSString stringWithFormat:@"insert into report_info (report_name,user_id,any_invoice,allowance,advance_payment,report_aim,report_starttime,report_endtime,destination) values (?,?,?,?,?,?,?,?,?)"];
//变参方法,每个?号代表一个字段值,所有参数必须为对象类类型
if (sql) {
[fmdb executeUpdate:sql,item.report_name,item.user_id,item.any_invoice,item.allowance,item.advance_payment,item.report_aim,item.report_starttime,item.report_endtime,item.destination];
//获取最后一个插入的数据的主键
markID = [fmdb lastInsertRowId];
}
else{
NSLog(@"插入失败 :%@",[fmdb lastErrorMessage]);
}
}
}
批量插入
-(void)insertStayArray:(NSArray *)array
{
//开始批量操作
[fmdb beginTransaction];
for (DataItem *item in array) {
[self insertStayItem:item];
}
//提交所有修改
[fmdb commit];
}
注释:在插入过程中遇到了一个问题 再插入nsinteger 类型的数据的时候 程序会崩溃 后来的解决办法是[NSString stringWithFormat:@"%d",item.report_id] 将其转化为nsstring 类
型在进行插入。
四、删除相对简单 只需要根据其主键后按照某些特定条件进行删除
-(void)deletestay_info:(int)stay_id
{
NSString*delete=[NSString stringWithFormat:@"DELETE FROM stay_info WHERE stay_id = %d",stay_id];
BOOL a=[fmdb executeUpdate:delete];
if (a) {
NSLog(@"%d,删除成功!",stay_id);
}
}
五、查找 也是根据某些特定的条件进行查找
-(DataItem*)getStay_info:(int)stay_id
{
NSString *sql=[NSString stringWithFormat:@"select * from stay_info where stay_id=%d",stay_id];
//执行查询
FMResultSet *rs=[fmdb executeQuery:sql];
//如果有记录
DataItem *item=[[[DataItem alloc] init] autorelease];
while ([rs next]) {
//此方法是一组方法
//根据字段类型选择不同方法
item.stay_id = [rs longForColumn:@"stay_id"];
item.stay_endtime = [rs stringForColumn:@"stay_endtime"];
item.stay_company_pay = [rs stringForColumn:@"stay_company_pay"];
}
return item;
}
六、修改 根据要修改的内容判断满足怎样的条件需要修改
-(void)alerttraffic_info:(DataItem *)item
{
NSLog(@"traffic_destination = %@",item.traffic_destination);
NSLog(@"traffic_id=%d",item.traffic_id);
NSString*Name=[NSString stringWithFormat:@"UPDATE traffic_info SET traffic_kind = '%@' WHERE traffic_id = %d",item.traffic_kind,item.traffic_id];
[fmdb executeUpdate:Name];
NSString*trafficDate=[NSString stringWithFormat:@"UPDATE traffic_info SET traffic_date = '%@' WHERE traffic_id = %d",item.traffic_date,item.traffic_id];
[fmdb executeUpdate:trafficDate];
}
fmdb(FMDatabase) 数据库总结相关推荐
- FMDB(FMDatabase)--SQLite的封装
为什么80%的码农都做不了架构师?>>> http://note.sdo.com/u/3413430/NoteContent/d1mS~k158MiwE0c400eTi SQL ...
- 使用FMDB进行数据库操作
FMDB: https://github.com/ccgus/fmdb 按照教程可以通过pods的方式进行依赖引入. 简单的增删改查操作,代码如下: #import "ViewControl ...
- FMDB iphone 数据库
from:http://blog.devtang.com/blog/2012/04/22/use-fmdb/ SQLite (http://www.sqlite.org/docs.html) 是一个轻 ...
- FMDB 操作数据库
操作数据库,之前,统一操作: if (![db open]) { [db release]; return; } 之后统一操作: [db close]; 1.创建表: ...
- Sqlite3数据库之第三方库FMDB学习心得
很早之前就接触Sqlite数据库,但是之前对数据库操作未使用任何第三方库,只是实现基本的增.删.改.查功能,自己对着一本iPhone开发入门级的书籍写了一个类,基本能实现上述四个功能.最近在开发一个软 ...
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- fmdb和mysql的区别_fmdb数据库
FMDB/SQLCipher数据库加解密,迁移 sqlite应用几乎在所有的App都能看到,虽然我们的数据存储在沙盒里面,一般情况下无法拿到,但是iOS管理软件(如:iFunBox)可以读取到应用程序 ...
- iOS - 数据持久化之 FMDB 的使用
前言 上一篇文章「iOS - 使用 SQLite 数据库实现数据持久化」,介绍了如何使用 sqlite3 操作 SQLite 数据库实现增删改查.但是在代码编写的过程中,我们发现 sqlite3 需要 ...
- Swift 3 0 FMDB 初试
###1.pod导入FMDB podfile 内容如下: # Uncomment the next line to define a global platform for your project ...
最新文章
- hypervisor简介
- i java_Java中的i++和i--
- 导出滴滴行程单_身穿统一的绿马甲!滴滴货运小哥上线首日即爆单
- Flume Sink Processor
- 基于JAVA+SpringMVC+MYSQL的学生请假管理系统
- 中国太阳能窗户市场趋势报告、技术动态创新及市场预测
- ICC_lab总结——ICC_lab3:布局
- rbw数字信号处理_基于FPGA的数字中频信号处理的设计与实现
- PostgreSQL客户端安装
- 【ffmpeg】支持vp8/vp9编码
- mac 打开虚拟机之后,原MAC没有声音解决方法
- C语言学习笔记(12)——函数基础
- 【纸飞机(PaperPlane)IMITATE版】知识点整理
- 【精简操作】Mathtype安装出现错误“53”/未找到.wll文件/选项卡灰色等问题
- Java 学生管理系统--------13
- 一个基本c语言注释用什么字符串,C语言的词法规则京鸿智武 今天提纲:本文主要介绍了C语言中...
- stream根据某个字段去重(对象的某个字段去重)
- 路由器老掉线的原因之一
- Java中使用JCOM操作Word/Excel对象
- java鼠标左键点击四溅,重生之我是一只鼠
热门文章
- Audio中underrun与overrun问题解决(十八)
- 以太网通信(1)UDP —— 数据发送
- Java 添加、替换、删除PDF中的图片
- JavaScript补齐指定位数
- jquery实现图片上传
- 高职医学计算机考试科目一模拟试题及答案,医药卫生(临床医学类专业除外)和高职单招对口医学类联考职业技能测试考试大纲...
- IFRS9 或中国版IFRS9 会计准则22号的内容和实施概述
- 18届大专实习生2020总结
- 高通8996启动流程-3. sbl1启动流程
- 阿里云Mysql5.7 数据库恢复 qp.xb文件恢复数据