如何在单个 iOS 项目中使用两个 sqlite 数据库文件同时从两个数据库中获取数据

How to use two sqlite database files in single iOS project with simultaneously fetch data from both Database

我的要求是在我的项目中添加两个 SQLite 数据库文件。我知道这是可能的。但是如何同时访问两个数据库文件呢?

目前我正在使用 FMDB 来操纵数据库操作。

注意: 我的两个数据库文件大小都接近 1GB。所以也想知道如果我使用 2 DB 文件那么我的应用程序中是否会出现任何内存问题?

谢谢。

一般情况下,很少需要在单个项目中使用 2 个数据库文件,特别是在 iOS 我们只使用了一个数据库的地方。

但根据您的要求,我们可以在具有多个数据库实例的单个项目中使用多个数据库文件。

要为 SQLite Native 使用以下代码创建 2 个实例:

//Create Object of DataBase
static sqlite3 *databaseOne = nil;
static sqlite3 *databaseTwo = nil;

//Open Both Databases while we needed in our project 

//Open First Database
sqlite3_open([path UTF8String], &databaseOne);

//Opne Second Database
sqlite3_open([path UTF8String], &databaseTwo);

//prepare for statement execution

sqlite3_prepare_v2(databaseOne, [sql UTF8String], -1, &stmt, NULL)

sqlite3_prepare_v2(databaseTwo, [sql UTF8String], -1, &stmt, NULL)

但请确保您在执行时不会混合这 2 个对象。

注意:在完成数据库任务后关闭两个连接。

要使用 FMDB 创建 2 个实例,请使用以下代码:

//First DB
FMDatabase *dbOne = [FMDatabase databaseWithPath:<your first DB file Path>];
[dbOne open];
//Do Your DB task
[dbOne close];

//Second DB 
FMDatabase *dbTwo = [FMDatabase databaseWithPath:<your second DB file Path>];
[dbTwo open];
//Do Your Second DB task
[dbTwo close];

希望对您有所帮助。