你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios FMDB類庫的使用 學習筆記

ios FMDB類庫的使用 學習筆記

編輯:IOS開發綜合

文章摘自: 文頂頂 iOS開發數據庫篇—FMDB簡單介紹

什麼是FMDB

FMDB是ios平台的sqlite數據庫框架

FMBD以oc的方式封裝了sqlite的c語言API

FMDB的優點

使用起來更加面向對象,省去了很多麻煩、冗余的c語言代碼

比蘋果的core Data框架,更加輕量級和靈活

提供了多線程安全的數據庫操作方法,有效地防止數據混亂

FMDB的github地址

www.2cto.com

核心類

FMDB有三個主要的類

1、FMDatabase

一個FMDatabase對象就代表一個單獨的sqlite數據庫,來執行sql語句

2、FMResultSet

使用FMDatabase執行查詢後的結果集

3、FMDatabaseQueue

用於在多線程中執行多個查詢或者更新,它是線程安全的。

打開數據庫

通過制定sqlite數據庫文件路徑來創建FMDatabase對象

 

FMDatabase *db = [FMDatabase databaseWithPath:path];

if (![db open]) {

    NSLog(@數據庫打開失敗!);

}

文件路徑有三種情況

 

1、具體文件路徑 (文件不存在會自動創建)

2、空字符串@ (會在臨時目錄創建一個空的數據庫,當FMDatabase連接關閉時,數據庫文件也被刪除)

3、nil (創建一個內存中臨時數據庫,當FMDatabase連接關閉時,數據庫會被銷毀)

執行更新

在FMDB中,除了查詢意外所有的操作,都稱為更新

Create 、drop、insert、update、delete 等

使用executeUpdate方法執行更新

 

- (BOOL)executeUpdate:(NSString*)sql, ...

- (BOOL)executeUpdateWithFormat:(NSString*)format, ...

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

 

示例

 

[db executeUpdate:@UPDATE t_student SET age = ? WHERE name = ?;, @20, @Jack]

執行查詢方法

 

 

- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

示例

 

 

// 查詢數據

FMResultSet *rs = [db executeQuery:@SELECT * FROM t_student];

while ([rs next]) {

    NSString *name = [rs stringForColumn:@name];

    int age = [rs intForColumn:@age];

    double score = [rs doubleForColumn:@score];

}

類庫的使用:

 

 

//打開數據庫
+ (FMDatabase *)openDB
{
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) lastObject];
    NSString *fileName = [filePath stringByAppendingString:@BaiduMap.sqlite];
    
    FMDatabase *db = [FMDatabase databaseWithPath:fileName];
    
    if ([db open]) {
        return db;
    }
    return nil;
}

#pragma mark - 數據庫更新
//除查詢外其他操作均為更新
+ (BOOL)upDate : (NSString *)sql
{
    FMDatabase *db = [self openDB];
    if (db != nil) {
        return [db executeUpdate:sql];
    }
    return NO;
}

#pragma mark - 數據庫創建表
+ (BOOL) createTable
{
    
    FMDatabase *db = [self openDB];
    if (db != nil) {
        NSString *sql = @CREATE TABLE location_record(ID INTEGER PRIMARY KEY AUTOINCREMENT ,latitude REAL NOT NULL,longitude REAL NOT NULL,time TEXT NOT NULL;
        return [db executeUpdate:sql];

    }
    return NO;
}

#pragma  mark - 插入數據
+ (BOOL)insert:(float)latitude :(float)longitude :(NSString *)time
{
    NSString *sql = [NSString stringWithFormat: @INSERT INTO location_record(latitude,longitude,time) values(%f,%f,%@),latitude,longitude,time];
    return [self upDate:sql];
}

#pragma  mark - 查詢
+ (NSArray *)query :(NSString *)starTime :(NSString *)endTime :(int)startNumber
{
    FMDatabase *db = [self openDB];
    if (db != nil) {
        NSString * sql = [NSString stringWithFormat:@SELECT (latitude,longitude) FROM location_record WHERE time>%@ AND time <%@ limit %d,60,starTime,endTime,startNumber];
        FMResultSet *resultSet = [db executeQuery:sql];
        NSMutableArray *array = [NSMutableArray array];
        while ([resultSet next]) {
            double latitude = [resultSet doubleForColumnIndex:1];
            double longitude= [resultSet doubleForColumnIndex:2];
            [array addObject:[NSNumber numberWithDouble: latitude]];
            [array addObject:[NSNumber numberWithDouble:longitude]];
        }
        return array;
    }
    return nil;
}

前人栽樹後人乘涼——吃水不忘挖井人

 

·

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved