接适当的使用共享缓存模式,无论是否使用sqlite3_enable_shared_cache()启用共享缓存。
?
SQLITE_OPEN_PRIVATECACHE 导致
数据库连接不使用共享缓存模式,即使共享缓存模型可用。
sqlite3_open_v2()第四个参数是sqlite3_vfs对象的名称,它定义了操作系统接口应该使用新的
数据库连接。如果第四个参数是一个nil的话,那么就会使用默认sqlite3_vfs对象。下方是结构体sqlite3_vfs的具体内容:
vfs: sqlite3_vfs对象的实例定义了一个SQLite核心和底层操作系统间的接口。“vfs”对象的名称代表“虚拟文件系统”。关于VFS的详解内容在这里:https://www.sqlite.org/vfs.
html 有兴趣的小伙伴可以好好的搞一下。如果以后有时间的话在好好的介绍一下VFS。今天就不做过多的赘述了。第四个参数传入nil就会使用默认的sqlite3_vfs默认对象。
?
关于VFS和sqlite3_vfs结构体的东西,如果以后有时间,在单独拿出来搞搞。了解VFS的结构和模式还是很有必要的。ok~今天打开并连接数据库,关于如何去通过接口去操作数据库就留在以后的博客中介绍吧。
?
用到的数据库和sqliteAPI代码GitHub分享地址:https://github.com/lizelu/SQLiteResource
?
在博客的最后呢,给出简单封装的打开数据库的方法:
/*******************************
*功能:打开数据库
*参数:databaseName -- 数据库名称
*返回:数据库对象(sqlite3对象)
*******************************/
+ (sqlite3 *) openDatabaseWithName: (NSString *)databaseName{
//获取Sqllite文件的路径
NSString *sqlPath = [[NSBundle mainBundle] pathForResource:databaseName ofType:@"sqlite"];
//把路径转成C字符串
const char * filePath = [sqlPath UTF8String];
sqlite3 * database;
//打开数据库
int result = sqlite3_open(filePath, &database);
if (result == SQLITE_OK) {
return database;
}
return nil;
}
?