sqlite на iphone может открыть БД, но не готовить заявления - PullRequest
0 голосов
/ 04 апреля 2010

Я новичок в использовании sqlite, поэтому, возможно, я пропустил что-то простое.

Я создал базу данных и скопировал ее в каталог документа моего приложения. Я могу открыть его, но когда я вызываю sqlite3_prepare_v2, я получаю SQLITE_ERROR, «Ошибка SQL или отсутствует база данных».

вот мой код:

sqlite3 *database;
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 
{
  sqlite3_stmt *compiledStatement;
  NSString *sqlStatement = @"select * from dbname";
  int result = sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1, &compiledStatement, nil);
  ...
}

тот же оператор sql работает в терминале.

Я нашел этот вопрос в нескольких местах либо без ответов, либо с решениями, которые не решают мою проблему. Я надеюсь, что кто-то здесь сможет помочь. Благодаря.

Edit:

Получил работу с помощью Firefox SQLite Manager, была проблема с файлом базы данных, созданным через терминал.

1 Ответ

0 голосов
/ 05 апреля 2010

Поскольку вы используете sqlite3_open, новая пустая база данных будет создана автоматически, если она еще не существует в данном месте в dbPath. Если вместо этого вы используете sqlite3_open_v2, вы можете управлять им, чтобы просто открыть существующую базу данных вместо того, чтобы создавать ее в случае отсутствия. Просто передайте флаг SQLITE_OPEN_READWRITE в третьем параметре.

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

Надеюсь, это поможет,

Claus

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