sqlite3_open
如果數據庫尚不存在,則返回錯誤。要創建,如果它不存在,使用sqlite3_open_v2
與SQLITE_OPEN_CREATE
和SQLITE_OPEN_READWRITE
標誌數據庫(兩者都需要):
rc = sqlite3_open_v2(/* DB Path */, &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
Reference
要找到/* DB PATH */
,您需要將文件名從文檔目錄中刪除:
- (NSString *) applicationDocumentsDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
您可以使用此便捷方法的文件路徑和數據庫名稱相結合:
NSString *documents = [self applicationDocumentsDirectory];
NSString *dbPath = [documents stringByAppendingPathComponent:@"test.db"];
rc = sqlite3_open_v2([dbPath UTF8String], &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
謝謝我曾嘗試過,並得到「錯誤:無法打開數據庫:內存不足」? – jdl
「test.db」位於哪裏(或應該創建)? –
我的理解是,如果文件不存在,它會創建它? – jdl