iOS中FMDB事務(wù)實(shí)現(xiàn)批量更新數(shù)據(jù)
本文實(shí)例為大家分享了iOS中FMDB事務(wù)實(shí)現(xiàn)批量更新數(shù)據(jù),供大家參考,具體內(nèi)容如下
打開(kāi)數(shù)據(jù)庫(kù)(sqlite)
///打開(kāi)數(shù)據(jù)庫(kù)
+ (BOOL)openDataBase{
_TYDatabase = [[FMDatabase alloc]initWithPath:[self databasePath]];
if ([_TYDatabase open]) {
return YES;
}
return NO;
}
///數(shù)據(jù)庫(kù)路徑
+ (NSString *)databasePath{
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *dataPath = [documentPath stringByAppendingPathComponent:@"TY.SQLite"];
NSFileManager *fileM = [NSFileManager defaultManager];
if (![fileM fileExistsAtPath:dataPath]) {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TY" ofType:@"SQLite"];
[fileM copyItemAtPath:filePath toPath:dataPath error:nil];
}
NSLog(@"%@",dataPath);
return dataPath;
}
事務(wù)
/**
事務(wù)
arraySql:SQL語(yǔ)句數(shù)組
*/
- (void)beginTransaction:(NSArray *)arraySql;
{
//// static FMDatabase *_TYDatabase = nil;
BOOL isOpen=[_TYDatabase open];
if (!isOpen) {
NSLog(@"打開(kāi)數(shù)據(jù)庫(kù)失??!");
return;
}
///開(kāi)始事物
[_TYDatabase beginTransaction];
BOOL isRollBack = NO;
@try {
for (int i = 0; i<arraySql.count; i++) {
BOOL result = [_TYDatabase executeUpdate:arraySql[i]];
if (!result) {
NSLog(@"操作失敗【%d】== SQL:%@",i,arraySql[i]);
}
}
}
@catch (NSException *exception) {
isRollBack = YES;
///回滾
[_TYDatabase rollback];
}
@finally {
if (!isRollBack) {
///提交
[_TYDatabase commit];
}
}
[_TYDatabase close];
}
多線程事務(wù)
/**
多線程事務(wù)
arraySql:SQL語(yǔ)句數(shù)組
*/
+ (void)beginTransactionT:(NSArray *)arraySql{
FMDatabaseQueue *databaseQueue = [FMDatabaseQueue databaseQueueWithPath:[self databasePath]];
[databaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {
BOOL result = NO;
for (int i = 0; i < arraySql.count; i++) {
result = [_TYDatabase executeUpdate:arraySql[i]];
}
if (result) {
NSLog(@"成功");
}
}];
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS10添加本地推送(Local Notification)實(shí)例
這篇文章主要為大家詳細(xì)介紹了iOS10添加本地推送(Local Notification)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例
這篇文章主要介紹了iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例,例子采用傳統(tǒng)的Objective-C語(yǔ)言編寫(xiě),需要的朋友可以參考下2016-03-03
iOS中使用NSProgress類來(lái)創(chuàng)建UI進(jìn)度條的方法詳解
NSProgress是iOS7以后引入的用于制作進(jìn)度條的類,能夠監(jiān)聽(tīng)多個(gè)任務(wù),這里就為大家?guī)?lái)iOS中使用NSProgress類來(lái)創(chuàng)建UI進(jìn)度條的方法詳解,需要的朋友可以參考下2016-06-06
Swift 2.1 為 UIView 添加點(diǎn)擊事件和點(diǎn)擊效果
本文主要介紹 Swift UIView,這里給大家提供代碼示例作為參考為UIView 添加點(diǎn)擊事件和點(diǎn)擊效果,希望能幫助IOS開(kāi)發(fā)的同學(xué)2016-07-07
iOS中利用CAEmitterLayer實(shí)現(xiàn)粒子動(dòng)畫(huà)詳解
粒子效果應(yīng)該對(duì)現(xiàn)在很多人來(lái)說(shuō)并不陌生,我們之前也分享了一些相關(guān)文章,下面這篇文章主要給大家介紹了關(guān)于iOS中利用CAEmitterLayer實(shí)現(xiàn)粒子動(dòng)畫(huà)的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友們下面來(lái)一起看看吧。2017-06-06
IOS應(yīng)用內(nèi)跳轉(zhuǎn)系統(tǒng)設(shè)置相關(guān)界面的方法
在iOS開(kāi)發(fā)中,有時(shí)會(huì)有跳轉(zhuǎn)系統(tǒng)設(shè)置界面的需求,例如提示用戶打開(kāi)藍(lán)牙或者WIFI,提醒用戶打開(kāi)推送或者位置權(quán)限等,接下來(lái)通過(guò)本文給大家介紹IOS應(yīng)用內(nèi)跳轉(zhuǎn)系統(tǒng)設(shè)置相關(guān)界面的方法,喜歡的朋友參考下2016-02-02
iOS開(kāi)發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)
這篇文章主要介紹了iOS開(kāi)發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10
iOS給border設(shè)置漸變色的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于iOS給border設(shè)置漸變色的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

