sqlite第三方類庫fmdb的使用

來源:互聯網
上載者:User

標籤:

       FMDB是ios平台下解析sqlite的第三方資料庫管理架構,使用非常方便,而且提供了多安全執行緒的資料庫操作,相比coredata來說更加靈活和輕量級。

        fmdb主要有三個類別:

        fmdatabase:用來執行sql語句;

       fmresultset:用來使用fmdatabase執行查詢後的結果集合

       fmdatabasequeue:用來在多線程中查詢和更新資料,它是安全執行緒的。

fmdb的使用

1.在建立的項目中,匯入libsqlite3的動態資料庫:

註:(在Building Phases中的Link Binary WithLibraries中添加)

2.加入第三方架構fmdb中的這些主要檔案:

  

3.在代碼中建立一個資料庫,並指定檔案路徑:

 1     //指定沙箱路徑 2     NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 3     //在指定沙箱路徑下添加sqlite檔案 4     NSString *filepath = [path stringByAppendingPathComponent:@"moxue.sqlite"]; 5     //在指定path路徑下建立資料庫 6     FMDatabase *db = [FMDatabase databaseWithPath:filepath]; 7     //查看是否開啟成功 8     if (![db open]) { 9         return;10     }else{11         NSLog(@"開啟成功");12     }

4.在代碼中添加列表和列表屬性:

1 //在資料庫中建立一個列表,並添加列表屬性2     BOOL result = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS data(id INTEGER PRIMARY KEY AUTOINCREMENT,Title TEXT,date TEXT,Context TEXT,Url TEXT)"];3     if (result) {4         NSLog(@"建立data表成功");5     }else{6         NSLog(@"建立data表失敗");7     }

5.在列表中插入資料:

1   //插入資料2     BOOL res = [db executeUpdate:@"INSERT INTO data (Title,date,Context,Url) VALUES(?,?,?,?)",@"墨雪",@"2015-10-11",@"我的表格",@"我的Url"];3     BOOL res1 = [db executeUpdate:@"INSERT INTO data (Title,date,Context,Url) VALUES(?,?,?,?)",@"劉慶",@"2015-10-10",@"劉慶的表格",@"劉慶的Url"];4     if (res1) {5         NSLog(@"插入data成功");6     }else{7         NSLog(@"插入data表失敗");8     }

6.在類表中刪除資料或者列表:

1 BOOL dele = [db executeUpdate:@"DROP TABLE IF EXISTS data"];2     BOOL dele1 = [db executeUpdate:@"delete from data where Title = ‘墨雪‘"];3     if (dele) {4         NSLog(@"刪除資料成功");5     }else{6         NSLog(@"刪除資料失敗");7     }

7.在列表中修改資料:

1  //修改資料2     BOOL UPDATE = [db executeUpdate:@"update data SET Title = ‘哈哈‘ WHERE id = 1" ];3     if (UPDATE) {4         NSLog(@"修改成功");5     }else{6         NSLog(@"修改失敗");7     }

8.在列表中查詢資料:

1  //查詢資料2     FMResultSet *RS = [db executeQuery:@"SELECT Title from data"];3     while ([RS next]) {4         NSString *name = [RS stringForColumn:@"Title"];5         NSLog(@"%@",name);6     }

 9. 如果應用中使用了多線程操作資料庫,那麼就需要使用FMDatabaseQueue來保證安全執行緒了。 應用中不可在多個線程中共同使用一個FMDatabase對象操作資料庫,這樣會引起資料庫資料混亂。 為了多線程操作資料庫安全,FMDB使用了FMDatabaseQueue,使用FMDatabaseQueue很簡單,首先用一個資料庫檔案地址來初使化FMDatabaseQueue,然後就可以將一個閉包(block)傳入inDatabase方法中。 在閉包中操作資料庫,而不直接參与FMDatabase的管理。

 1  FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:filepath]; 2     dispatch_queue_t myq1 = dispatch_queue_create("myqueue1", nil); 3     dispatch_async(myq1, ^{ 4        [queue inDatabase:^(FMDatabase *db) { 5            FMResultSet *RS = [db executeQuery:@"SELECT Title from data"]; 6            while ([RS next]) { 7                NSString *name = [RS stringForColumn:@"Title"]; 8                NSLog(@"%@",name); 9            }10 11        }];12     });

10.關閉資料庫

 1 [db close];  

11.另外 FMResultSet 還提供了很多方法來獲得所需的格式的值:

    intForColumn:    longForColumn:    longLongIntForColumn:    boolForColumn:    doubleForColumn:    stringForColumn:    dataForColumn:    dataNoCopyForColumn:    UTF8StringForColumnIndex:    objectForColumn:

sqlite第三方類庫fmdb的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.