Ios 检查sqlite3数据库是否为空
我正在构建一个ios应用程序,其中sqlite文件启动一次,并在所有sqlite事务中使用;这样做是为了节省性能。 其定义如下:Ios 检查sqlite3数据库是否为空,ios,objective-c,sqlite,Ios,Objective C,Sqlite,我正在构建一个ios应用程序,其中sqlite文件启动一次,并在所有sqlite事务中使用;这样做是为了节省性能。 其定义如下: static sqlite3 *dbName = nil; 在函数中,我将数据库初始化为: -(int)initialize:(NSString *)dbPath{ if (sqlite3_open_v2(dbPath, &dbName, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQL
static sqlite3 *dbName = nil;
在函数中,我将数据库初始化为:
-(int)initialize:(NSString *)dbPath{
if (sqlite3_open_v2(dbPath, &dbName, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
//some codes
}
}
经过一些事务处理后,我发现sqlite3实例为空,应用程序崩溃。我想知道是否有办法检查sqlite3实例是否已解除分配。我可以看到两个潜在问题:
NULL
。这是因为您没有防止多次打开它sqlite3\u open\u v2(dbPath,&dbPath,
,这是不正确的。名称dbName
也没有正确选择-(int)initialize:(NSString *)dbPath{
if (dbName == NULL) {
if (sqlite3_open_v2(dbPath, &dbName, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
//some codes
}
}
}
您最好使用单例模式,而不是
static
,因为它更干净。static?您不应该使用单例模式类,即DatabaseManager
,并将实例保留在该类中,以确保它保持其状态,并且可以在整个应用程序中访问吗?我会照您所说的做。Thanks