你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> 數據庫使用之第三方庫 FMDB

數據庫使用之第三方庫 FMDB

編輯:IOS技巧綜合
[摘要]本文是對數據庫使用之第三方庫 FMDB的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

下載 FMDB

1. 引進 sqlite3 工具箱,在要進行數據庫操作的類裡引進頭文件 : 因為第三方軟件同樣是使用 sqlite 工具箱來操作數據庫的,只不過是簡化了操作,讓語法更接近 OC 的語法, 而不需要使用過多的 C 語法;

#import <sqlite3.h>

2. 將第三方庫加載進工程:方法是直接將 FMDB 的源文件拖拽進工程即可;

3. 使用第三方庫訪問數據庫

當然了,對於高手而言,對第三方庫進行了解後,上手是很快的,對於小白,只能一步一步走啦。

3.1 指定數據庫的存儲路徑,一般都是在沙盒根目錄下地 Documents 文件夾下,文件的後綴名是 .sqlite:如 db_students.sqlite;

NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/db_student.sqlite"];

3.2 先創建一個 FMDatabase 的對象 *_db;

FMDatabase *_db;

使用前要先初始化

_db = [[FMDatabase alloc] initWithPath:filePath];

看它的初始化方法:在初始化方法裡沒有做什麼多余的操作,除了指定數據庫存儲的路徑外,沒有其他操作,0x00 是一個十六進制的地址,代表 nil(或者說 NULL )

創建並打開數據庫:

[_db open];

這句代碼的作用有兩個:

1)若數據庫不存在,則創建並打開;

2)若數據庫已經存在,則打開數據庫;

也許你還記得:sqlite3_open(path, &_db);

這兩句代碼的作用是一樣的,只不過前者更接近 OC 的語法,其實質還是通過後者操作數據庫的。

3.3 創建表

if (![_db tableExists:@"tb_students"])
{
     [_db executeUpdate:@"create table tb_students (ID integer primary key not null unique, name text, age integer)"];
} // 先調用方法,判斷表是否已經存在,若不存在則創建表

整個過程則為:

NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/db_student.sqlite"];
_db = [[FMDatabase alloc] initWithPath:filePath];
if ([_db open])
{
   if (![_db tableExists:@"tb_students"])
   {
       [_db executeUpdate:@"create table tb_students (ID integer primary key not null unique, name text, age integer)"];
    }
}
[_db close]; // 當對數據庫的操作結束後不要忘記關閉數據庫

3.4 插入、刪除、更新、查詢表的操作

第一步:打開數據庫

第二部:數據庫操作

第三部:關閉數據庫

需要注意的是,在進行對表的插入、刪除、更新時,調用的方法是- (BOOL)executeUpdate:(NSString*)sql, ...;

看示例:

- (void)insertTable:(ZYStudent *)stu
{
    if ([_db open])
    {
        [_db executeUpdate:@"insert into tb_students (name, age) values (?, ?)", stu.name, [NSNumber numberWithInt:stu.age]];
    } // 這裡需要注意的是:替換 sql 語句裡的 ?,不能直接使用基本類型的數據,而是需要將基本類型轉換為 對象類型,符合 OC 的語法
    
    [_db close];
}

對表進行查詢時,調用的方法是:- (FMResultSet *)executeQuery:(NSString*)sql, ...;

原因大概也都知道:插入、刪除、更新操作時,主要表現出來的變化是數據表,受影響的時表中的行(即一條或幾條記錄),而查詢操作不同,進行查詢操作的目的就是要獲得表中的數據,那麼就應該將獲得數據存儲,這樣就新引用了一個概念:結果集(ResultSet)。

在查詢操作裡:可以簡單的將理解為結果集是用來接收查詢數據的,然後就可以將數據從結果集取出來,通過一定手段展示出來。

- (void)selectTable
{
    NSMutableArray *array = [NSMutableArray array];
    if ([_db open])
    {
        FMResultSet *rs = [_db executeQuery:@"select * from tb_students"];
        while ([rs next])
        {
            ZYStudent *stu = [[[ZYStudent alloc] init] autorelease];
            stu.ID = [rs intForColumnIndex:0];
            stu.name = [rs stringForColumnIndex:1];
            stu.age = [rs intForColumnIndex:2];
            [array addObject:stu];
        }
    }
    [_db close];
    NSLog(@"________%@", array);
}
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved