当我运行构建ios5.0或更少时,Sqlite响应更正并检索数据工作正常但是当在ios6.0上运行时我试图从my.sqlite数据库中获取数据但是它没有执行我的if情况。它总是进入其他条件。我做错了什么?我无法执行我的if情况,即if(sqlite3_prepare_v2(database, sqlQuerry, -1, &querryStatement, NULL)==SQLITE_OK).
供参考检查此代码。
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 :(得分:2)
将其放入else中,以便我们可以看到导致的错误..
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 :(得分:1)
尝试从您的设备(或模拟器)中删除您的应用,然后清理&构建
答案 2 :(得分:0)
我不是百分百肯定,但对此: NULL 是 void * , nil 是 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改变nil。再次不是100%肯定,但只有我在你的代码中看到。我总是使用NULL:)
希望这有帮助...