FMDB简单用法
首先引入类库

声明数据库和路径
/** 声明数据库对象 */
@property (nonatomic, strong) FMDatabase *dataBase;
/** 声明存储路径 */
@property (nonatomic, strong) NSString *filePath;
创建表:
#pragma mark - 创建表
- (void)createTable { // 1.创建sql语句
NSString *str = @"create table if not exists t_student (id integer primary key autoincrement not null, name text not null, age integer not null, sex text not null)"; // 2.找到存储路径
NSString *document = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
self.filePath = [document stringByAppendingPathComponent:@"student.sqlite"];
NSLog(@"filePath = %@", self.filePath); // 3.初始化FMDB对象
self.dataBase = [FMDatabase databaseWithPath:self.filePath]; // 4.判断数据库打开的时候才执行语句
if ([self.dataBase open]) {
BOOL result = [self.dataBase executeUpdate:str]; if (result) {
NSLog(@"创建表成功");
} else {
NSLog(@"创建表失败");
}
} // 5.关闭数据库
[self.dataBase close];
}
添加
#pragma mark - 以队列方式插入多个学生【这种方式较为常用】
- (IBAction)insertManyStudent:(id)sender { // FMDB不支持多个线程同时操作,所以一般以串行的方式实现相关的操作 // 1.打开数据库
[self.dataBase open]; // 2.创建操作队列
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.filePath]; // 3.标识:记录是否操作成功
__block BOOL isSucced = YES; // 4.把所需要的事件打包放在操作队列中
[queue inTransaction:^(FMDatabase *db, BOOL *rollback) { // 串行队列
isSucced = [db executeUpdate:@"insert into t_student (name, age, sex) values (?, ?, ?)", @"高月", @, @"女"] && isSucced;
isSucced = [db executeUpdate:@"insert into t_student (name, age, sex) values (?, ?, ?)", @"石兰", @, @"女"] && isSucced;
isSucced = [db executeUpdate:@"insert into t_student (name, age, sex) values (?, ?, ?)", @"卫庄", @, @"男"] && isSucced; // 如果有错误,就将它返回
if (!isSucced) {
// block返回的参数rollback进行处理(bool类型的指针)
*rollback = YES;
return;
} else {
NSLog(@"插入成功");
}
}]; // 5.关闭数据库
[self.dataBase close];
}
更改
#pragma mark - 更改学生
- (IBAction)updateAction:(id)sender { // 1.打开数据库
[self.dataBase open]; // 2.执行语句
BOOL result = [self.dataBase executeUpdate:@"update t_student set name = ? where name = ?", @"少羽", @"卫庄"];
if (result) {
NSLog(@"更改成功");
} else {
NSLog(@"%d", result);
NSLog(@"更改失败");
} // 3.关闭数据库
[self.dataBase close];
}
删除
#pragma mark - 删除学生
- (IBAction)deleteAction:(id)sender { // 1.打开数据库
[self.dataBase open]; // 2.执行sql语句
BOOL result = [self.dataBase executeUpdate:@"delete from t_student where name = ?", @"少羽"];
if (result) {
NSLog(@"删除成功");
} else {
NSLog(@"删除失败");
} // 3.关闭数据库
[self.dataBase close];
}
查询所有
// 查询所有
- (NSMutableArray *)searchAll { [self.dataBase open];
FMResultSet *resultSet = [self.dataBase executeQuery:@"select *from p_person"];
NSMutableArray *array = [NSMutableArray array];
while ([resultSet next]) {
Person *person = [[Person alloc] init];
person.id = [resultSet intForColumn:@"id"];
person.name = [resultSet objectForColumnName:@"name"];
person.age = [resultSet intForColumn:@"age"];
person.weight = [resultSet doubleForColumn:@"weight"]; [array addObject:person];
}
[self.dataBase close];
return array;
}
FMDB简单用法的更多相关文章
- CATransition(os开发之画面切换) 的简单用法
CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
- iOS开发数据库篇—FMDB简单介绍
iOS开发数据库篇—FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...
- NSCharacterSet 简单用法
NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...
- [转]Valgrind简单用法
[转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...
- Oracle的substr函数简单用法
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 subst ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
- TransactionScope简单用法
记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...
随机推荐
- 语义化HTML:ul、ol和dl
一.语义化元素 1. ul标签 W3C草案: The ul element represents an unordered list of items; that is, a list in wh ...
- Ajax长轮询
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Wait.asp ...
- .net的垃圾回收机制简述
.如何理解.net中的垃圾回收机制. .NET Framework 的垃圾回收器管理应用程序的内存分配和释放.每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存.只要托管堆中有地址 ...
- win系统盘下面安装RedHat Linux6.2ES
安装中的流程和问题 1.安装准备 硬盘分区 下载rhel-server-6.2-i386-dvd.iso 接下来就是一些安装过程 2.安装教程有很多,可以结合参考: http://www.dedecm ...
- php自动载入类的实践
<?php //function __autoload($class_name) {// require_once $class_name . '.php';//} spl_autoloa ...
- redis主从 以及认证配置
以前用redis用的很多,各种数据类型用的飞起,算是用得很溜了.不过那都是封装好的方法,自己直接调用.以前的公司比较规范,开发只是开发,很少去做跟运维相关的事情. 换了一份工作,不过这边项目刚开始起步 ...
- JavaScript学习(1):基础
这篇文章里,我们来聊一些JavaScript的基础知识. 1. 如何运行JavaScript? JavaScript是一种解释型的语言,它不需要提前编译.通常情况下,JavaScript会放在网页中, ...
- BOOtstrap源码分析之 tooltip、popover
一.tooltip(提示框) 源码文件: Tooltip.jsTooltip.scss 实现原理: 1.获取当前要显示tooltip的元素的定位信息(top.left.bottom.right.wid ...
- 15款优雅的 WordPress 电子商务网站主题
WordPress 电子商务网站主题今年非常流行,特别是对那些想要在几分钟内创建一个在线商店,但又没有掌握网络开发的很多知识的人来说.WordPress 是一个功能强大的 CMS,它的灵活性和可用性是 ...
- 15个最佳的代码评审(Code Review)工具
代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能.代码审查程序以各种形式,如结对编程,代码抽查等.在这个列表中,我们编制了1 ...