Как мне вернуть JSON из текстового поля Sqlite? - PullRequest
0 голосов
/ 21 декабря 2011

Мне удалось сохранить некоторое количество JSON в поле в моей базе данных sqlite, длина поля TEXT (в документах sqlite нет ограничений на размер текстового поля) равна 1337.

I 'Я даже попробовал varchar, но снова мое приложение зависает с SGABRT.Я не получаю никаких других сведений об ошибке.

Глядя на запись в утилите sqlite, данные полны и точны, и мой запрос, показанный ниже, работает.

Я даже подставил, почему запроси код работает с записью в другой таблице.

Я знаю, что должен использовать Core Data, но это уже существующее приложение, и я не могу сейчас его преобразовать.

Не знаете, как действовать?

NSString *ret = @"";
const char *sql = "select value from MyTable where item = 'json'";

sqlite3 *database;
int result = sqlite3_open(... db path function ...], &database);
... snip in not db and error code ...
sqlite3_stmt *statementTMP;

sqlite3_prepare_v2(database, sql, -1, &statementTMP, NULL);
    if (sqlite3_step(statementTMP) == SQLITE_ROW) {
        ret = [[NSString alloc] initWithUTF8String:
             (char *)sqlite3_column_text(statementTMP, 1)]; << Fails here
    }
sqlite3_finalize(statementTMP);
sqlite3_close(database);

РЕДАКТИРОВАТЬ

Начало моих данных JSON

{"lowestday":"31","pfAppAdvAcSel":-1,"styleselec

Дальнейшее редактирование

        char *test = (char *)sqlite3_column_text(statementTMP, 1);
        NSLog(@"value = %s", test); << (NULL)

1 Ответ

0 голосов
/ 21 декабря 2011

Проблема в том, что вы звоните sqlite3_column_text() неправильно.Поскольку вы выбираете только один столбец (значение), существует только один столбец, из которого вы можете извлечь текст.В SQLite3 номера столбцов начинаются с 0, а не с 1. Поэтому вам следует изменить второй аргумент вашего вызова на sqlite3_column_text с 0 вместо 1.

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