2011-12-20 68 views
0

我已經成功地存儲一些JSON的一個字段在我的SQLite數據庫,文本的長度(sqlite的文檔世界上沒有限制的文本字段大小)字段是1337如何從Sqlite文本字段返回JSON?

我甚至試過varchar,但我的應用程序崩潰與SGABRT。我沒有得到任何其他的錯誤細節。

查看sqlite實用程序中的記錄數據是完整的,並且我的查詢如下所示。

我甚至已經替換爲什麼查詢和代碼在另一個表中使用記錄。

我知道我應該使用核心數據,但這是一個現有的應用程序,我現在不能轉換它。

不知道如何繼續?

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) 
+0

您可以向我們展示一些JSON的示例嗎? – 2011-12-20 21:33:06

+0

當然,看看上面的編輯。 – Jules 2011-12-20 21:35:11

+1

獲取char *值。首先測試它是否爲空(最有可能)。如果不爲null,則在轉換爲NSString之前使用%s打印值。 – 2011-12-20 21:37:07

回答

0

問題的開始是,你是不正確調用sqlite3_column_text()。由於您只選擇了一列(值),因此只有一列可以從中提取文本。在SQLite3中,列號以0開頭,而不是1.因此,您應該將呼叫的第二個參數更改爲sqlite3_column_text,而不是1.