FMDB基本操做

      一、之前使用數據庫,由於通常就創建一張表,因此都是本身寫代碼建立,沒用過fmdb,此次由於項目中涉及聊天模塊,須要多張表格和數據庫保存聊天記錄git

按照之前方法很差操做,就研究了下fmdb,發現確實挺方便的。FMDB下載地址:https://github.com/ccgus/fmdbgithub

 

       二、導入FMDB文件,再導入libsqlite3.tbd依賴包。sql

 

    //建立打開數據庫
    NSString *path = [self getDBPath:@"student"];//若是名稱爲空 數據庫斷開時會刪除
    DDb = [FMDatabase databaseWithPath:path]; [self createTable:@"95230"]; //建表
    [self insertDate:@"95230"];  //添加數據
    [self updataWithTable:@"95230"]; //修改
    [self deledataWith:@"95230"]; //刪除
    [self chaxunWith:@"95230"]; //查詢
 NSLog(@"%@/Documents",NSHomeDirectory()); //模擬器運行時 打開Documents查看數據庫文件

 

//查詢數據庫
-(void)chaxunWith:(NSString *)tabname { if ([DDb open]) { // NSString *sql = [NSString stringWithFormat:@"select * from '%@' where age = '%@'",tabname,@"18"];//         NSString *sql = [NSString stringWithFormat:@"select * from '%@'",tabname]; FMResultSet * rs = [DDb executeQuery:sql]; while ([rs next]) { NSString * name = [rs stringForColumn:@"name"]; int age = [rs intForColumn:@"age"]; NSData *imgdata = [rs dataForColumn:@"image"]; NSLog(@"%@ - %i",name,age); } [DDb close]; } } //刪除數據
-(void)deledataWith:(NSString *)tabname { if ([DDb open]) { NSString *sql = [NSString stringWithFormat:@"delete from '%@' where %@ = '%@'",tabname,@"age",@"19"]; BOOL dele = [DDb executeUpdate:sql]; if (!dele) { NSLog(@"delete fail"); } [DDb close]; } } //修改數據
-(void)updataWithTable:(NSString *)tabname { if ([DDb open]) { NSString *sql = [NSString stringWithFormat:@"update '%@' set %@ = '%@' where age = '%@'",tabname,@"name",@"張86",@"18"]; BOOL update =[DDb executeUpdate:sql]; if (!update) { NSLog(@"update fail"); } [DDb close]; } } //添加數據
-(void)insertDate:(NSString *)tabname { if ([DDb open]) { NSString *bb = [NSString stringWithFormat:@"INSERT INTO '%@' (name, age, image) VALUES (?,?,?)",tabname]; // UIImage *img = [UIImage imageNamed:@"test"]; // NSData *imgdata = UIImagePNGRepresentation(img);
        BOOL insert = [DDb executeUpdate:bb,@"小三",@"20",[NSData data]]; if (!insert) { NSLog(@"insert fail"); } [DDb close]; } } //建立數據庫表格
-(void)createTable:(NSString *)tabname { if ([DDb open]) { //判斷表名是否爲純數字
        NSString *sqlCreateTable =  [NSString stringWithFormat:@"create table if not exists '%@' (id INTEGER PRIMARY KEY AUTOINCREMENT, name text,age integer, image blob)",tabname];         BOOL res = [DDb executeUpdate:sqlCreateTable]; if (!res) { NSLog(@"建立表格失敗"); } [DDb close]; } } //建立數據庫
-(NSString *)getDBPath:(NSString *)curname { curname = [NSString stringWithFormat:@"%@.sqlite",curname]; NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *DBPath = [documentPath stringByAppendingPathComponent:curname]; return DBPath; }

 

注:FMDB寫入圖片數據NSData時候,圖片轉換成數據流用 UIImageJPEGRepresentation( img , float); 若是用 UIImagePNGRepresentation轉的話,寫入數據庫時間會變長,數據庫

      我5張圖片沒有壓縮轉 寫入數據庫時間須要花費1.5秒,並且是寫入任何一個參數都要1.5秒。spa

>>>>>  其餘比較詳細的FMDB使用介紹.net

=====> http://m.blog.csdn.net/article/details?id=7204625code

 

O(∩_∩)Oorm

相關文章
相關標籤/搜索