sqlite3_open всегда возвращает SQLITE_OK? - PullRequest
4 голосов
/ 31 октября 2011

Любопытно, что ... кажется, что даже если я изменю 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 ]

7 голосов
/ 31 октября 2011

База данных создана для вас, если она еще не существует.

6 голосов
/ 12 января 2013

Откройте базу данных следующим образом:

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

Тогда он вернет код ошибки (14), если файл базы данных не существует.Однако, если файл существует, но не является допустимой базой данных, он возвращает SQLITE_OK!

1 голос
/ 03 ноября 2011

Это похоже на выполнение следующих действий в терминале:

sqlite3 test.db

Если его там нет, оно будет создано для вас.Таким образом, вы просто создаете новую базу данных каждый раз, когда меняете имя, и, вероятно, вы увидите ее в своем основном комплекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...