2012-09-29 112 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 :)

希望这有助于...根据你提供的输出