麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

iOS開發-數據篇-sqlite存儲

2019-11-14 18:30:43
字體:
來源:轉載
供稿:網友

簡介:iOS開發的持久化數據存儲有4種方式:NSUserDefault.plistNSKeyedArchiverNSKeyedUnarchiversqlite3數據庫CoreData

sqlite3CoreData適合存儲大量數據(內容數據等),而另外兩種適合存儲簡單數據(語言,字體,標記等簡單數據存儲)

準備:這里主要介紹利用sqlite3封裝的FMDatabase的數據庫,(當然還有PlausibleDatabasesqlitepersistentobjects等其他封裝的庫),導入需要依賴的libsqlite3.dylib,FMDatabase已經根據工程不同情況兼容ARC和非ARC。為了只針對數據庫進行講解,直接創建一個簡單工程,導入FMDatabase庫。

內容:1.創建數據庫

#import <UIKit/UIKit.h>#import "FMDatabase.h"#import "FMDatabaseQueue.h"@interface ViewController : UIViewController{    FMDatabase *db;    FMDatabaseQueue *queue_db;}
//創建數據庫文件路徑- (NSString*)getPath{    NSArray* paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) ;    return [[paths objectAtIndex:0]stringByAppendingPathComponent:@"TEST.sqlite"] ;}

2.數據庫的建表-增-刪-改操作

- (void)viewDidLoad {    [super viewDidLoad];        [self executeSql:[self createTable]];//創表    [self executeSql:[self insertData]];//    [self executeSql:[self deleteData]];//    [self executeSql:[self setData]];////    [self queryData];    //開辟多線程    [NSThread detachNewThreadSelector:@selector(multipleThread) toTarget:self withObject:nil];    }
//創建數據庫-(NSString *)createTable{    NSString *createSql = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS TEST(a interger,b text)"];    return createSql;}//- (NSString *)insertData{    NSString *insertSql= [NSString stringWithFormat:                          @"INSERT INTO '%@' ('%@', '%@') VALUES ('%@', '%@')",                          @"TEST", @"a", @"b", [NSNumber numberWithInt:1], @"寧波"];    return insertSql;}//- (NSString *)deleteData{    NSString *deleteSql = [NSString stringWithFormat: @"DELETE FROM '%@' where %@ = '%@'",                           @"TEST", @"b", @"寧波"];    return deleteSql;}//-(NSString *)setData{    NSString *setSql = [NSString stringWithFormat:@"UPDATE '%@' SET '%@' = '%@' WHERE '%@' = '%@'",                        @"TEST", @"b",  @"象山" ,@"a",  [NSNumber numberWithInt:1]];    return setSql;}

3.數據庫的執行操作

//數據庫執行操作-(BOOL)executeSql:(NSString *)sql{    db = [FMDatabase databaseWithPath:[self getPath]];    BOOL success;    if ([db open]) {        success  = [db executeUpdate:sql];    }else{        NSLog(@"OPEN FAIL");    }    [db close];    return success;}

4.數據庫的查詢操作

//-(void)queryData{    if ([db open]) {        NSString *querySql = [NSString stringWithFormat:                              @"SELECT * FROM %@",@"TEST"];        FMResultSet * rs = [db executeQuery:querySql];        while ([rs next]) {            int a = [rs intForColumn:@"a"];            NSString *b = [rs stringForColumn:@"b"];            NSLog(@"a:%d  == b:%@",a,b);        }                [db close];    }}

5.數據庫的多線程操作

若在多線程的環境下,不能在多線程中共用同一個FMDatabase進行數據訪問,會造成數據混亂,多線程下不能用單例對象,這時得依靠FMDatabaseQueue。

//多線程下使用FMDatabaseQueue進行數據庫操作-(void)multipleThread{    queue_db = [FMDatabaseQueue databaseQueueWithPath:[self getPath]];    @autoreleasepool{        [queue_db inDatabase:^(FMDatabase *db2) {            [db2 executeUpdate:[self insertData]];            [self queryData];        }];    }}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产免费 | 久综合| av手机在线免费播放 | 女教师~淫辱の动漫在线 | 久久精品小短片 | 亚洲啪| 欧美一区高清 | 欧美精品一区二区三区四区 | 91九色福利| 91在线观看 | 中文欧美日韩 | 国产一区二区免费 | 黄色7777| 欧美精品免费一区二区三区 | av免费在线观看国产 | 日本在线免费观看 | 久久国产在线观看 | 夜夜夜精品视频 | 97人人草| 欧美国产永久免费看片 | 亚洲视频高清 | 亚洲欧美在线视频免费 | 人人舔人人射 | av免费提供 | 国产九九 | 97精品视频在线观看 | 欧美大胆xxxx肉体摄影 | 成人午夜激情视频 | 精品国产乱码久久久久久久 | 国产精品999在线观看 | 在线看免费观看日本 | 爽爽淫人网 | 久久国产精品区 | 蜜桃网站在线 | 黄色网战入口 | 久久久久久亚洲国产精品 | h视频免费在线观看 | 蜜桃一本色道久久综合亚洲精品冫 | 视频久久免费 | 日韩欧美动作影片 | 成人免费av在线播放 |