使用fmdb 做本地数据的存储非常方便,

1. github 上搜索fmdb 下载压缩包 导入到工程中 (如果你的mac 有cocoapod 也可以直接通过cocoapod 添加)

2. 以下代码是通过fmdb 多数据库的各种操作,其中有几点需要注意:(1). 程序中 Ceasar 是表名   (2). 修改数据库数据  提前准备字符串时 值 要用单引号括起来 否则会出错 : NSString *temp = [NSString stringWithFormat:@"UPDATE %@ SET %@ = '%@' WHERE %@ = '%@'",@"Ceasar",@"Name",@"hao",@"Age",[NSNumber numberWithInt:100]];

    NSString *path = @"/Users/shijieli/Desktop/test.sqlite";

FMDatabase *db = [FMDatabase databaseWithPath:path];

if ([db open]) {//创建表

BOOL res = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS Ceasar (Name text, Age integer, Photo blob)"];

if (!res) {

NSLog(@"error when creating db table");

} else {

NSLog(@"success to creating db table");

}

[db close];

}

if ([db open]) {//添加数据

BOOL res = [db executeUpdate:@"INSERT INTO Ceasar (Name, Age, Photo) VALUES (?, ?, ?)",@"Gaius",[NSNumber numberWithInteger:100],[NSData dataWithContentsOfFile:@"/Users/shijieli/Desktop/testPicture.jpg"]];

if (res) {

NSLog(@"success to insert db table");

} else {

NSLog(@"error when insert db table");

}

[db close];

}

if ([db open]) {//查询

FMResultSet * rs = [db executeQuery:@"SELECT * FROM Ceasar"];

while ([rs next]) {

NSString * name = [rs stringForColumn:@"Name"];

int age = [rs intForColumn:@"Age"];

NSData *photo = [rs dataForColumn:@"Photo"];

NSLog(@" name = %@, age = %d",  name, age);

BOOL isCreate = [[NSFileManager defaultManager] createFileAtPath:@"/Users/shijieli/Desktop/car.jpg" contents:photo attributes:nil];

if (!isCreate) {

NSLog(@" ****** create failure");

}

}

[db close];

}

//        if ([db open]) {//修改数据

//            NSString *temp = [NSString stringWithFormat:@"UPDATE %@ SET %@ = '%@' WHERE %@ = '%@'",@"Ceasar",@"Name",@"hao",@"Age",[NSNumber numberWithInt:100]];

//            BOOL res = [db executeUpdate:temp];

//            if (!res) {

//                NSLog(@"error when update db table");

//            } else {

//                NSLog(@"success to update db table");

//            }

//

//            [db close];

//

//        }

//        if ([db open]) {//清除表

//            BOOL res = [db executeUpdate:@"DELETE FROM Ceasar"];

//            if (!res) {

//                NSLog(@"delete failure");

//            }

//        }

if ([db open]) {//删除数据

NSString *deleteSql = [NSString stringWithFormat:

@"delete from %@ where %@ = '%@'",

@"Ceasar", @"Name", @"hao"];

BOOL res = [db executeUpdate:deleteSql];

if (!res) {

NSLog(@"error when delete db table");

} else {

NSLog(@"success to delete db table");

}

[db close];

}

}

iOS 三方库fmdb 的使用的更多相关文章

  1. iOS:iOS开发非常全的三方库、插件等等

    iOS开发非常全的三方库.插件等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自git ...

  2. QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData

    SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...

  3. 2018 6年iOS开发常用的三方库

    开发一般APP必备三方库,省力秘籍!!!本篇文章会经常更新最新常用的三方. 1.网络请求库 AFNetworking https://github.com/AFNetworking/AFNetwork ...

  4. iOS的非常全的三方库,插件,大牛博客

    转自: http://www.cnblogs.com/zyjzyj/p/6015625.html github排名:https://github.com/trending, github搜索:http ...

  5. IOS数据持久化存储之SQLite3第三方库FMDB的使用

    SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3.在IOS中使用SQLite如果使 ...

  6. iOS开发 非常全的三方库、插件、大牛博客等等

    UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableVie ...

  7. iOS - .a静态库的打包(包括打包的文件中用到了一些别人的三方库和分类的处理)

    一.概念篇 什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking ...

  8. Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录

    第一步:下载第三方库,点击 连接 下载, 第二部:准备数据库:按照连接&中博客的步骤实现数据库, 数据库的设计大致如下表: id        username             pas ...

  9. iOS:二叉树多级表格的使用,使用三方库TreeTableView-master实现对json解析数据的递归遍历整理成树状结构

    在项目中,我们有时需要使用二叉树来实现多级表格的递归遍历查询,如果对二叉树比较懂,那么写起来其实也不费事,为了节省开发时间,下面介绍一下第三方库TreeTableView-master,这个三方库上给 ...

随机推荐

  1. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】

    <Web 前端开发精华文章推荐>2014年第2期(总第23期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  2. Android学习笔记之短信验证码的获取和读取

    PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...

  3. velocity的一些用法

    velocity模板其实就是java不分语法的翻译,用到的属性还是java的方法,get,set,等 1.截取部分字段substring 原始字符串:$!ag.tagValue,也许很长,前端页面展示 ...

  4. 通过自定义相册来介绍photo library的使用

    因为我在模仿美图秀秀的功能,在使用相册时候,UIImagePickerController本来就是一个UINavigationController的子类,所以没有办法使用push,所以做了一个自定义的 ...

  5. 【Android学习笔记】XmlResourceParser解析xml文件

    最近学习Android时,需要用到解析XML文件里的数据,可以用XmlResourceParser来解析xml文件,正好将此记录下来. XmlResourceParser里常用的字段和方法 首先先给出 ...

  6. 如何解读SQL Server日志(1/3)

    SQL Server 的事务日志包含所有数据修改的操作记录.分析日志一般作为解决某些问题的最后手段,如查看某些意外的修改.理解和分析日志内容是件非常困难的事情,fn_dblog通常会输出非常多的数据, ...

  7. Redis使用总结(1):基础使用

    Redis的安装及启动 安装 Ubuntu sudo apt-get install redis Mac sudo brew install redis Windows 不支持 启动 首先启动Redi ...

  8. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public cl ...

  9. 温故而知新--sql存储过程复习

    存储过程是已编译好的T-SQL语句的集合,可以随时调用,速度快,不易出错. 可以传递参数,普通参数和输出参数(output) 实例1 create proc Newpro @testVarA int, ...

  10. 【C#】回调方法不通过object参数获得委托实例

    回调方法中几乎都会存在获取委托实例的需求,进而通过委托实例调用EndInvoke以得到异步执行的返回值.在我看过的相关文章中,获取委托实例的方法几乎都是同一个,就是向BeginInvoke的最后一个参 ...