当前位置: 首页 > news >正文

网站备案期间访问html编辑器汉化版

网站备案期间访问,html编辑器汉化版,网易企业邮箱入口官网,运城网站建设公司有多少FMDB简单介绍 一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象#xff0c;省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架#xff0c;更加轻量级和灵活 提供了多线程安全…FMDB简单介绍 一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API   2.FMDB的优点 使用起来更加面向对象省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架更加轻量级和灵活 提供了多线程安全的数据库操作方法有效地防止数据混乱   3.FMDB的github地址 https://github.com/ccgus/fmdb   二、核心类 FMDB有三个主要的类 1FMDatabase 一个FMDatabase对象就代表一个单独的SQLite数据库 用来执行SQL语句   2FMResultSet 使用FMDatabase执行查询后的结果集   3FMDatabaseQueue 用于在多线程中执行多个查询或更新它是线程安全的   三、打开数据库 通过指定SQLite数据库文件路径来创建FMDatabase对象 FMDatabase *db [FMDatabase databaseWithPath:path]; if (![db open]) {     NSLog(数据库打开失败); }   文件路径有三种情况 1具体文件路径   如果不存在会自动创建   2空字符串   会在临时目录创建一个空的数据库   当FMDatabase连接关闭时数据库文件也被删除   3nil   会创建一个内存中临时数据库当FMDatabase连接关闭时数据库会被销毁   四、执行更新 在FMDB中除查询以外的所有操作都称为“更新” create、drop、insert、update、delete等   使用executeUpdate:方法执行更新 - (BOOL)executeUpdate:(NSString*)sql, ... - (BOOL)executeUpdateWithFormat:(NSString*)format, ... - (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments   示例 [db executeUpdate:UPDATE t_student SET age ? WHERE name ?;, 20, Jack]   五、执行查询 查询方法 - (FMResultSet *)executeQuery:(NSString*)sql, ... - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ... - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments   示例 // 查询数据 FMResultSet *rs [db executeQuery:SELECT * FROM t_student];   // 遍历结果集 while ([rs next]) {     NSString *name [rs stringForColumn:name];     int age [rs intForColumn:age];     double score [rs doubleForColumn:score]; }   六、代码示例 1.新建一个项目导入libsqlite3库并在项目中包含主头文件 2.下载第三方框架FMDB    3.示例代码   YYViewController.m文件 1 //2 // YYViewController.m3 // 04-FMDB基本使用4 //5 // Created by apple on 14-7-27.6 // Copyright (c) 2014年 wendingding. All rights reserved.7 //8 9 #import YYViewController.h 10 #import FMDB.h 11 12 interface YYViewController () 13 property(nonatomic,strong)FMDatabase *db; 14 end 15 16 implementation YYViewController 17 18 - (void)viewDidLoad 19 { 20 [super viewDidLoad]; 21 //1.获得数据库文件的路径 22 NSString *doc[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 23 NSString *fileName[doc stringByAppendingPathComponent:student.sqlite]; 24 25 //2.获得数据库 26 FMDatabase *db[FMDatabase databaseWithPath:fileName]; 27 28 //3.打开数据库 29 if ([db open]) { 30 //4.创表 31 BOOL result[db executeUpdate:CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);]; 32 if (result) { 33 NSLog(创表成功); 34 }else 35 { 36 NSLog(创表失败); 37 } 38 } 39 self.dbdb; 40 41 } 42 43 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 44 { 45 [self delete]; 46 [self insert]; 47 [self query]; 48 } 49 50 //插入数据 51 -(void)insert 52 { 53 for (int i 0; i10; i) { 54 NSString *name [NSString stringWithFormat:jack-%d, arc4random_uniform(100)]; 55 // executeUpdate : 不确定的参数用?来占位 56 [self.db executeUpdate:INSERT INTO t_student (name, age) VALUES (?, ?);, name, (arc4random_uniform(40))]; 57 // [self.db executeUpdate:INSERT INTO t_student (name, age) VALUES (?, ?); withArgumentsInArray:[name, (arc4random_uniform(40))]]; 58 59 // executeUpdateWithFormat : 不确定的参数用%、%d等来占位 60 // [self.db executeUpdateWithFormat:INSERT INTO t_student (name, age) VALUES (%, %d);, name, arc4random_uniform(40)]; 61 } 62 } 63 64 //删除数据 65 -(void)delete 66 { 67 // [self.db executeUpdate:DELETE FROM t_student;]; 68 [self.db executeUpdate:DROP TABLE IF EXISTS t_student;]; 69 [self.db executeUpdate:CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);]; 70 } 71 72 //查询 73 - (void)query 74 { 75 // 1.执行查询语句 76 FMResultSet *resultSet [self.db executeQuery:SELECT * FROM t_student]; 77 78 // 2.遍历结果 79 while ([resultSet next]) { 80 int ID [resultSet intForColumn:id]; 81 NSString *name [resultSet stringForColumn:name]; 82 int age [resultSet intForColumn:age]; 83 NSLog(%d % %d, ID, name, age); 84 } 85 } 86 87 end 打印查看结果 提示 如果ID设置为逐渐且设置为自动增长的话那么把表中的数据删除后重新插入新的数据ID的编号不是从0开始而是接着之前的ID进行编号。 注意   不要写成下面的形式不要加直接使用%,它会自动认为这是一个字符串。  -------------------------------------------------------------------------------------------------------------------------------------------------------------- FMDB数据库队列 一、代码示例 1.需要先导入FMDB框架和头文件由于该框架依赖于libsqlite库所以还应该导入该库。 2.代码如下 1 //2 // YYViewController.m3 // 05-FMDB数据库队列4 //5 // Created by apple on 14-7-28.6 // Copyright (c) 2014年 wendingding. All rights reserved.7 //8 9 #import YYViewController.h 10 #import FMDB.h 11 12 interface YYViewController () 13 property(nonatomic,strong)FMDatabaseQueue *queue; 14 end 15 16 implementation YYViewController 17 18 - (void)viewDidLoad 19 { 20 [super viewDidLoad]; 21 22 //1.获得数据库文件的路径 23 NSString *doc[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 24 NSString *fileName[doc stringByAppendingPathComponent:person.sqlite]; 25 26 //2.获得数据库队列 27 FMDatabaseQueue *queue[FMDatabaseQueue databaseQueueWithPath:fileName]; 28 // FMDatabase *db[FMDatabase databaseWithPath:fileName]; 29 30 //3.打开数据库 31 [queue inDatabase:^(FMDatabase *db) { 32 BOOL result[db executeUpdate:CREATE TABLE IF NOT EXISTS t_person (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);]; 33 if (result) { 34 NSLog(创表成功); 35 }else 36 { 37 NSLog(创表失败); 38 } 39 }]; 40 self.queuequeue; 41 42 } 43 44 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 45 { 46 //插入数据 47 // [self.queue inDatabase:^(FMDatabase *db) { 48 // [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 22]; 49 // }]; 50 51 //查询数据 52 [self.queue inDatabase:^(FMDatabase *db) { 53 // 1.执行查询语句 54 FMResultSet *resultSet [db executeQuery:SELECT * FROM t_person]; 55 56 // 2.遍历结果 57 while ([resultSet next]) { 58 int ID [resultSet intForColumn:id]; 59 NSString *name [resultSet stringForColumn:name]; 60 int age [resultSet intForColumn:age]; 61 NSLog(%d % %d, ID, name, age); 62 } 63 }]; 64 65 } 66 67 end 先插入数据之后查询结果打印如下 3.代码说明 有了一个队列对象它的内部自动就拥有一个数据库对象且数据库的操作是线程安全的。 二、事务 事务没有事务的话会出现问题。 举例银行的例子 张三和李四账户都有1000块钱如果张三要转账给李四需要执行两条SQL语句考虑到安全性要求这两条鱼具要么全部执行成功要不全部执行失败。 事务把多条语句放到同一个事务中要么全部成功要不全部失败如果中途出现问题那么会自动回滚。事务的执行具有原子性。 事务代码处理 把多条语句添加到一个事务中去执行 1 //插入数据 2 [self.queue inDatabase:^(FMDatabase *db) { 3 [db beginTransaction]; 4 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 22]; 5 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 23]; 6 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 24]; 7 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 25]; 8 [db commit]; 9 }]; 如果中途出现问题那么会自动回滚也可以选择手动回滚。 1 //插入数据2 [self.queue inDatabase:^(FMDatabase *db) {3 [db beginTransaction];4 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 22];5 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 23];6 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 24];7 [db rollback];8 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 25];9 [db commit]; 10 }]; 上面的代码。前三条插入语句是作废的。 事务处理的另一种方式 1 [self.queue inTransaction:^(FMDatabase *db, BOOL *rollback) { 2 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 22]; 3 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 23]; 4 [db executeUpdate:INSERT INTO t_person (name, age) VALUES (?, ?);,wendingding, 24]; 5 }]; 说明先开事务再开始事务之后执行block中的代码段最后提交事务。 转载于:https://www.cnblogs.com/LifeTechnologySupporter/p/5016938.html
http://www.pierceye.com/news/171520/

相关文章:

  • dw如何做网站后台佛山行业网站建设
  • 如何做网站轮播大图简单网页制作成品代码
  • 网站怎么做uc整合查企业网站
  • 网站没被收录什么原因网站排名点击工具
  • 江西南昌建设厅网站商品展示软件
  • 眼镜企业网站建设方案2015做那些网站致富
  • 创建个人网站的流程建设网站聊天室
  • cms 学校网站上海模板网站
  • 网站建设投资风险分析公司做的网站费用如何做账
  • 网站建设费用核算科目DW做的网页用网站打不开
  • wordpress标签搜索引擎嘉兴市做网站优化
  • 网站更换关键词怎么做好wordpress post fonts
  • 厦门优化网站排名网站备案转服务器
  • 怎样做pdf电子书下载网站做旅行攻略的网站
  • 怎样做网站推广啊抖音网站的flash怎么做
  • 网站建设小说网站建设目标是什么意思
  • 如何做一个好的网站中英文网站好处
  • wordpress站点版权设置晋中建设集团网站
  • 怎么夸一个网站做的好看烟台百度网站推广
  • 佛山市网站建设分站多少钱企业门户账号是什么
  • 大中型网站开发价格铜山区建设局局网站周保春
  • 为什么有人做商城优惠券网站卖科技风格设计网站
  • 企业网站的需求分析是做网站编辑还是做平面设计
  • 超酷 flash 网站淮南网红餐厅
  • 湛江网站建设开发株洲关键词seo优化服务商
  • 女的有没有做网站的十大经典随身空间小说推荐
  • 江西做网站哪家好监理证查询网
  • 北京驾校网站建设网络哪里能接活做网站
  • 建设网站公司排名西宁网站建设优化案例
  • 外贸网站推广有用吗网络服务投诉平台