iOS开发数据库《五》篇—FMDB简单介绍以及高级使用

FMDB数据库高级使用demo

一、简单说明

1.什么是FMDB

FMDB是iOS平台的SQLite数据库框架

FMDB以OC的方式封装了SQLite的C语言API

2.FMDB的优点

使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码

对比苹果自带的Core Data框架,更加轻量级和灵活

提供了多线程安全的数据库操作方法,有效地防止数据混乱

3.FMDB的github地址

https://github.com/ccgus/fmdb

二、核心类

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"];

}

六、高级使用

第一步:下载FMDB第三方代码导入工程
如图所示:在这里插入图片描述

第二步:创建有个sqlite文件(里面有需要的表)

好处:
1.这样可以减少冗余写创建表的代码,
2.更加直观,简洁
3.更加方便,快捷(添加和删除表和字段时,直接在sqlite文件操作)

如图:在这里插入图片描述

第三步:app 启动时(拷贝应用数据库文件)

将数据库的文件拷贝到数据库中用NSFileManager

NSString *filePath =  沙盒数据库的路径
    if (![FMDBFileUtil fileExistAtPath:filePath]) {
    //资源文件的路径
        NSString *fromPath = [[NSBundle mainBundle] pathForResource:kDatabaseDBName ofType:kDBFileSuffix];
        [FMDBFileUtil fileCopy:fromPath toPath:filePath];
    }

+ (BOOL)fileCopy:(NSString *)fromPath toPath:(NSString *)toPath
{
    BOOL success = NO;
    if (![FMDBFileUtil fileExistAtPath:fromPath]) {
        NSLog(@"fileCopy Error : from file is error");
        success = NO;
    }
    else {
        NSFileManager *filemanager = [NSFileManager defaultManager];
        NSError *error;
        success = [filemanager copyItemAtPath:fromPath toPath:toPath error:&error];
        if (!success)
        {
            NSLog(@"fileCopy Error : %@",[error localizedDescription]);
        }
    }
    return success;
}

第四步:检测数据库的升级
数据库更新

第五步:数据库操作

**

七、 使用FMDB事务批量更新数据库(事务

)**

使用FMDB事务批量更新数据库

发布了128 篇原创文章 · 获赞 106 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/Z1591090/article/details/89923132