2011-12-20 7 views
0

мне удалось сохранить некоторые JSON на поле в моей базе данных SQLite, длина текста (в SQLite документации Тереза ​​нет ограничений на размер текстового поля) поля 1337.Как вернуть JSON из текстового поля Sqlite?

Я даже пытался 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); 

EDIT

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

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

Далее EDIT

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

Можете ли вы показать нам пример некоторых из JSON? –

+0

Несомненно, см. Выше. – Jules

+1

Возвращает значение char *. Первый тест, чтобы узнать, является ли он нулевым (скорее всего). Если значение не равно null, напечатайте значение с помощью% s перед преобразованием в NSString. –

ответ

0

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