sqlite3_open总是返回SQLITE_OK?

时间:2011-10-31 15:17:34

标签: objective-c sqlite

对此感到好奇......似乎即使我将pathForResource更改为@“fadfdasfa”或其他不存在的名称,我仍然记录“数据库已打开”?

sqlite3 * myDatabase;

NSString *path = [[NSBundle mainBundle] pathForResource:@"carsdatabase" ofType:@"db"];

    if (sqlite3_open([path UTF8String], &myDatabase) == SQLITE_OK)
        NSLog(@"Database Opened");
    else 
        NSLog(@"Failed to Open");

3 个答案:

答案 0 :(得分:7)

如果数据库尚不存在,则为您创建数据库。

答案 1 :(得分:6)

像这样打开数据库:

std::string filename("mydatabase.db");
sqlite3 *db;
int rc = sqlite3_open_v2(filename.c_str(), &db, SQLITE_OPEN_READWRITE, NULL);

如果数据库文件不存在,它将返回错误代码(14)。但是,如果文件存在但不是有效数据库,则返回SQLITE_OK

答案 2 :(得分:1)

这就像在终端中运行以下内容一样:

sqlite3 test.db

如果不存在,则会为您创建。因此,每次更改名称时都只需创建一个新数据库,并且可能会在主包中看到它。