sqlite3 обновить синтаксис строки - PullRequest
3 голосов
/ 12 августа 2010

Из документов sqlite3 похоже, что я могу использовать следующий синтаксис для обновления строки в базе данных на моем iPhone:


NSString *dbFile  = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"db"];
sqlite3 *database  = NULL;

if (sqlite3_open([dbFile UTF8String], &database) == SQLITE_OK) {
 NSString *sql = [NSString stringWithFormat:@"update mytable set myfirstcolumn=%d, mysecondcolumn=%d where id=%d", int1, int2, int3];
 sqlite3_exec(database, [sql UTF8String], MyCallback, nil, nil);
}

sqlite3_close(database);

Но это не обновляет базу данных и даже не вызываетметод обратного вызова.Это просто неправильный синтаксис, так как в sqlite3_exec () не может, например, выполнить обновление?

В моем примере все имена столбцов верны, и три значения int записываются как правильные значения, так что я вродевне идей ...

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

А, верно, разобрался с процессом, который теперь может ответить на чужой запрос.В основном у меня была база данных в комплекте ресурсов с некоторыми базовыми данными для моих тестов, которые я мог читать хорошо.Но поскольку ресурс комплекта доступен только для чтения, я не смог записать данные обратно в базу данных.

Таким образом, решение заключается в том, чтобы копировать базу данных в папку «Документы» приложения при запуске приложения программно, но с кодом, чтобы увидеть, является ли база данныхтам уже существует (чтобы не перезаписывать его).Поскольку эта папка предназначена для чтения и записи, при обновлении базы данных не должно быть проблем.

0 голосов
/ 12 августа 2010

sqlite3_exec обычно возвращает код ошибки (int), и последний параметр может быть указателем на строку, которая установит сообщение об ошибке. Что они говорят?

sqlite3_exec(database, [sql UTF8String], MyCallback, nil, &errorMsg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...