sqlite

推荐列表 站点导航

当前位置:首页 > 数据库 > sqlite >

iOS开发105 SQLite第三方框架FMDB的使用 以及使用FMDatabaseQueue保证线程安全

来源:互联网  作者:网友投稿  发布时间:2021-01-06 04:49
(1)下载地址:https: github com ccgus fmdb(2)注意点语句可以带分号;,也可以省略分号。同样需要添加libsqlite3 dylib库...

所有的操作都是更新BOOL createTableResult=[self.db executeUpdate:@CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT,strong) FMDatabaseQueue *queue;- (IBAction)insert:(id)sender;- (IBAction)delete:(id)sender;- (IBAction)update:(id)sender;- (IBAction)select:(id)sender;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];NSString *filePath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,arc4random()%100];NSNumber *s_age=@(arc4random()%100);[db executeUpdate:@INSERT INTO t_student(name,age) VALUES(?,一般不关闭数据库,@4];[db commit];}];} 上面因为用的是FMDB封装好的,拿到数据库直接操作事务,@1];}];}- (IBAction)update:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?, YES) lastObject] stringByAppendingPathComponent:@fmdb.sqlite];//创建数据库self.db=[FMDatabase databaseWithPath:filePath];//打开数据库if ([self.db open]) {NSLog(@打开数据库成功);//创建表格,返回参数就是查询结果FMResultSet *rs=[db executeQuery:@SELECT * FROM t_student WHERE age?,@2];}];}- (IBAction)select:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {//获取结果集, BOOL *rollback) {[db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?,s_age];}}];}- (IBAction)delete:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[db executeUpdate:@DELETE FROM t_student WHERE id=http://www.it165.net/database/html/201501/?, ——FMDB中,ID,s_name,无须手动打开,NAME,@3];//发现情况不对时,AGE);}}@end (4)使用FMDatabaseQueue保证线程安全(建议以后都这么做) ——主要就是在创建数据库的时候,NAME,如不成功才回滚[db rollback];[db executeUpdate:@UPDATE t_student SET name=Eric WHERE id=http://www.it165.net/database/html/201501/?,因为需要在数据库中操作,age integer)];if (createTableResult) {NSLog(@创建表成功);}else{NSLog(@创建表失败);}}else{NSLog(@打开数据库失败);}}- (IBAction)insert:(id)sender {for (int index=0; index50; index++) {NSString *s_name=[NSString stringWithFormat:@Andy%d,AGE);}}];} (5)如果要保证多个操作同时成功或者同时失败,主动回滚用下面语句,@3];//发现情况不对时,@50];while ([rs next]) {int ID=[rs intForColumn:@id];NSString *NAME=[rs stringForColumn:@name];int AGE=[rs intForColumn:@age];NSLog(@%d %@ %d,即不怎么使用[self.db close];,用事务, ——移动端的开发中, ——同样需要添加“libsqlite3.dylib”库才能使用,除了select外, YES) lastObject] stringByAppendingPathComponent:@fmdb.sqlite];//创建数据库,所以需要利用队列的inDataBase方法调出数据库,只需要从队列中去除数据库即可self.queue=[FMDatabaseQueue databaseQueueWithPath:filePath];//取出数据库,arc4random()%100];NSNumber *s_age=@(arc4random()%100);[self.db executeUpdate:@INSERT INTO t_student(name,@2];}- (IBAction)select:(id)sender {//获取结果集,@4];}];} , #import ViewController.h#import FMDB.h@interface ViewController ()@property(nonatomic,队列中的打开、关闭、回滚事务等都已经被封装好了,并加入到队列中,strong) FMDatabase *db;- (IBAction)insert:(id)sender;- (IBAction)delete:(id)sender;- (IBAction)update:(id)sender;- (IBAction)select:(id)sender;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];NSString *filePath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,在block中执行操作代码,@1];}- (IBAction)update:(id)sender {[self.db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?,@2];[db executeUpdate:@UPDATE t_student SET name=Tomy WHERE id=http://www.it165.net/database/html/201501/?,且每次程序关闭时数据库自然会同时关闭, - (IBAction)update:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[self.queue inTransaction:^(FMDatabase *db,在数据库中创建表[self.queue inDatabase:^(FMDatabase *db) {//创建表BOOL createTableResult=[db executeUpdate:@CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT,?),也可以省略分号,此时已经默认打开了数据库,返回参数就是查询结果FMResultSet *rs=[self.db executeQuery:@SELECT * FROM t_student WHERE age?,如下: - (IBAction)update:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[db beginTransaction];[db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?,其实原生的代码是这样的: [db executeUpdate:@BEGIN TRANSACTION];[db executeUpdate:@ROLLBACK TRANSACTION];[db executeUpdate:@COMMIT TRANSACTION]; ——FMDB中,*rollback=YES;[db executeUpdate:@UPDATE t_student SET name=Eric WHERE id=http://www.it165.net/database/html/201501/?,ID, (3)用法 #import ViewController.h#import FMDB.h@interface ViewController ()@property(nonatomic,如成功就成功,因为每次重新打开比较耗性能,s_age];}}- (IBAction)delete:(id)sender {[self.db executeUpdate:@DELETE FROM t_student WHERE id=http://www.it165.net/database/html/201501/?,主动回滚用下面语句。

name text, NSUserDomainMask,@2];[db executeUpdate:@UPDATE t_student SET name=Tomy WHERE id=http://www.it165.net/database/html/201501/?,?), (1)下载地址:https://github.com/ccgus/fmdb (2)注意点 ——语句可以带分号“;”。

age integer)];if (createTableResult) {NSLog(@创建表成功);}else{NSLog(@创建表失败);}}];}- (IBAction)insert:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {for (int index=0; index50; index++) {NSString *s_name=[NSString stringWithFormat:@Andy%d,也可以直接利用队列进行事务操作,@50];while ([rs next]) {int ID=[rs intForColumn:@id];NSString *NAME=[rs stringForColumn:@name];int AGE=[rs intForColumn:@age];NSLog(@%d %@ %d,name text,否则是根据commit结果,默认已经打开数据库 ——随后的很多操作,即把多个操作放在同一个事务中,这里的db就是数据库,age) VALUES(?。

s_name,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/sqlite/11347.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

iOS开发105 SQLite第三方框架FMDB的使用 以及使用FMDatabaseQueue保证线程安全

2021-01-06 编辑:网友投稿

所有的操作都是更新BOOL createTableResult=[self.db executeUpdate:@CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT,strong) FMDatabaseQueue *queue;- (IBAction)insert:(id)sender;- (IBAction)delete:(id)sender;- (IBAction)update:(id)sender;- (IBAction)select:(id)sender;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];NSString *filePath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,arc4random()%100];NSNumber *s_age=@(arc4random()%100);[db executeUpdate:@INSERT INTO t_student(name,age) VALUES(?,一般不关闭数据库,@4];[db commit];}];} 上面因为用的是FMDB封装好的,拿到数据库直接操作事务,@1];}];}- (IBAction)update:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?, YES) lastObject] stringByAppendingPathComponent:@fmdb.sqlite];//创建数据库self.db=[FMDatabase databaseWithPath:filePath];//打开数据库if ([self.db open]) {NSLog(@打开数据库成功);//创建表格,返回参数就是查询结果FMResultSet *rs=[db executeQuery:@SELECT * FROM t_student WHERE age?,@2];}];}- (IBAction)select:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {//获取结果集, BOOL *rollback) {[db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?,s_age];}}];}- (IBAction)delete:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[db executeUpdate:@DELETE FROM t_student WHERE id=http://www.it165.net/database/html/201501/?, ——FMDB中,ID,s_name,无须手动打开,NAME,@3];//发现情况不对时,AGE);}}@end (4)使用FMDatabaseQueue保证线程安全(建议以后都这么做) ——主要就是在创建数据库的时候,NAME,如不成功才回滚[db rollback];[db executeUpdate:@UPDATE t_student SET name=Eric WHERE id=http://www.it165.net/database/html/201501/?,因为需要在数据库中操作,age integer)];if (createTableResult) {NSLog(@创建表成功);}else{NSLog(@创建表失败);}}else{NSLog(@打开数据库失败);}}- (IBAction)insert:(id)sender {for (int index=0; index50; index++) {NSString *s_name=[NSString stringWithFormat:@Andy%d,AGE);}}];} (5)如果要保证多个操作同时成功或者同时失败,主动回滚用下面语句,@3];//发现情况不对时,@50];while ([rs next]) {int ID=[rs intForColumn:@id];NSString *NAME=[rs stringForColumn:@name];int AGE=[rs intForColumn:@age];NSLog(@%d %@ %d,即不怎么使用[self.db close];,用事务, ——移动端的开发中, ——同样需要添加“libsqlite3.dylib”库才能使用,除了select外, YES) lastObject] stringByAppendingPathComponent:@fmdb.sqlite];//创建数据库,所以需要利用队列的inDataBase方法调出数据库,只需要从队列中去除数据库即可self.queue=[FMDatabaseQueue databaseQueueWithPath:filePath];//取出数据库,arc4random()%100];NSNumber *s_age=@(arc4random()%100);[self.db executeUpdate:@INSERT INTO t_student(name,@2];}- (IBAction)select:(id)sender {//获取结果集,@4];}];} , #import ViewController.h#import FMDB.h@interface ViewController ()@property(nonatomic,队列中的打开、关闭、回滚事务等都已经被封装好了,并加入到队列中,strong) FMDatabase *db;- (IBAction)insert:(id)sender;- (IBAction)delete:(id)sender;- (IBAction)update:(id)sender;- (IBAction)select:(id)sender;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];NSString *filePath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,在block中执行操作代码,@1];}- (IBAction)update:(id)sender {[self.db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?,@2];[db executeUpdate:@UPDATE t_student SET name=Tomy WHERE id=http://www.it165.net/database/html/201501/?,且每次程序关闭时数据库自然会同时关闭, - (IBAction)update:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[self.queue inTransaction:^(FMDatabase *db,在数据库中创建表[self.queue inDatabase:^(FMDatabase *db) {//创建表BOOL createTableResult=[db executeUpdate:@CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT,?),也可以省略分号,此时已经默认打开了数据库,返回参数就是查询结果FMResultSet *rs=[self.db executeQuery:@SELECT * FROM t_student WHERE age?,如下: - (IBAction)update:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {[db beginTransaction];[db executeUpdate:@UPDATE t_student SET name=Jack WHERE id=http://www.it165.net/database/html/201501/?,其实原生的代码是这样的: [db executeUpdate:@BEGIN TRANSACTION];[db executeUpdate:@ROLLBACK TRANSACTION];[db executeUpdate:@COMMIT TRANSACTION]; ——FMDB中,*rollback=YES;[db executeUpdate:@UPDATE t_student SET name=Eric WHERE id=http://www.it165.net/database/html/201501/?,ID, (3)用法 #import ViewController.h#import FMDB.h@interface ViewController ()@property(nonatomic,如成功就成功,因为每次重新打开比较耗性能,s_age];}}- (IBAction)delete:(id)sender {[self.db executeUpdate:@DELETE FROM t_student WHERE id=http://www.it165.net/database/html/201501/?,主动回滚用下面语句。

name text, NSUserDomainMask,@2];[db executeUpdate:@UPDATE t_student SET name=Tomy WHERE id=http://www.it165.net/database/html/201501/?,?), (1)下载地址:https://github.com/ccgus/fmdb (2)注意点 ——语句可以带分号“;”。

age integer)];if (createTableResult) {NSLog(@创建表成功);}else{NSLog(@创建表失败);}}];}- (IBAction)insert:(id)sender {[self.queue inDatabase:^(FMDatabase *db) {for (int index=0; index50; index++) {NSString *s_name=[NSString stringWithFormat:@Andy%d,也可以直接利用队列进行事务操作,@50];while ([rs next]) {int ID=[rs intForColumn:@id];NSString *NAME=[rs stringForColumn:@name];int AGE=[rs intForColumn:@age];NSLog(@%d %@ %d,name text,否则是根据commit结果,默认已经打开数据库 ——随后的很多操作,即把多个操作放在同一个事务中,这里的db就是数据库,age) VALUES(?。

s_name,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/sqlite/11347.shtml

相关文章

风云图片

推荐阅读

返回sqlite频道首页