2012-09-29 131 views
4

當我運行生成ios5.0或更低,然後Sqlite響應正確和檢索數據其工作正常,但在ios6.0上運行時,我試圖從my.sqlite數據庫中獲取數據但它不執行我的情況。它總是進入其他條件。我在做什麼錯事?我不能執行我的情況下,即if(sqlite3_prepare_v2(database, sqlQuerry, -1, &querryStatement, NULL)==SQLITE_OK).無法從SQLite數據庫iOS6.0檢索數據

供參考檢查此代碼。

NSLog(@"sqlite3_prepare_v2 = %d SQLITE_OK %d ",sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil),SQLITE_OK); 

    if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK) 
    { 

     NSLog(@"sqlite3_step = %d SQLITE_ROW %d ",sqlite3_step(compiledStatement),SQLITE_ROW); 
     while (sqlite3_step(compiledStatement)==SQLITE_ROW) 
     {   if(sqlite3_column_text(compiledStatement, 2) != nil) 
       modelObj.Name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 

     } 
    } 
    else 
    { 

    } 

在iOS6.0日誌打印

sqlite3_prepare_v2 = 1 SQLITE_OK 0 
sqlite3_step = 21 SQLITE_ROW 100 

在iOS5.0日誌打印

sqlite3_prepare_v2 = 0 SQLITE_OK 0 
sqlite3_step = 100 SQLITE_ROW 100 
+0

不看,就好像它在所有進入其他情況下 - 在這兩個的iOS5和iOS6的,我們看到兩個日誌消息。 – TomSwift

+0

看到這個答案,你可能有同樣的問題: http://stackoverflow.com/a/6749033/73429 –

回答

2

放置在其他這個,所以我們可以看到由此產生的錯誤..

if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK) 
{ 

    NSLog(@"sqlite3_step = %d SQLITE_ROW %d ",sqlite3_step(compiledStatement),SQLITE_ROW); 
    while (sqlite3_step(compiledStatement)==SQLITE_ROW) 
    {   if(sqlite3_column_text(compiledStatement, 2) != nil) 
     modelObj.Name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 

    } 
} 
else{ 
    //error 
    NSLog(@"Failed to open database. Error: %s",sqlite3_errmsg(database)); 
} 
1

嘗試從設備(或模擬器),再用乾淨的&構建

刪除您的應用程序
+0

這麼多時間刪除設備應用程序也模擬器乾淨的構建,也嘗試戒菸的Xcode。但沒有在ios6.0中執行sqlite的數據 – kunalg

+0

你能顯示你的查詢嗎? – Solidus

+0

查詢是:SELECT * FROM Sites ORDER BY標題ASC – kunalg

0

我不是100%肯定,但對本: NULL無效*ID

所以,如果你可以改變這一點:

if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK) 

白色這個:

if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, NULL)==SQLITE_OK) 

我只是將NULL更改爲NULL。再次不是100%肯定的,但只有我看到你的代碼。我總是用NULL :)

希望這有助於...根據你提供的輸出