I’ve managed to store some JSON to a field in my sqlite database, the length of the TEXT (in the sqlite docs theres no limit on a text field size) field is 1337.
I’ve even tried varchar, but again my app crashes with SGABRT. I don’t get any other error details.
Looking at the record in a sqlite utility the data is complete and fine and my query shown below works.
I’ve even substituted why query and the code does work with a record in another table.
I know I should be using Core Data but this is an existing app and I can’t convert it at this time.
No sure how to proceed ?
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
Start of my JSON data
{"lowestday":"31","pfAppAdvAcSel":-1,"styleselec
Further EDIT
char *test = (char *)sqlite3_column_text(statementTMP, 1);
NSLog(@"value = %s", test); << (NULL)
The problem is that you are calling
sqlite3_column_text()incorrectly. Since you are selecting only a single column (value), there is only one column from which you can extract text. In SQLite3, column numbers begin with 0, rather than 1. Therefore, you should change the second argument of your call tosqlite3_column_textwith 0 instead of 1.