Não é possível recuperar dados do banco de dados SQLite iOS6.0
-
11-12-2019 - |
Pergunta
Quando executo o build ios5.0 ou menos, a resposta do SQLite corrige e recupera os dados, funciona bem, mas quando executo no ios6.0, estou tentando buscar dados do banco de dados my.sqlite, mas não está executando meu caso if.Sempre entra na condição else.Que coisa errada estou fazendo?Não consigo executar meu caso if, ou seja, if(sqlite3_prepare_v2(database, sqlQuerry, -1, &querryStatement, NULL)==SQLITE_OK).
para referência, verifique este código.
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
{
}
No log do iOS6.0 Imprimir
sqlite3_prepare_v2 = 1 SQLITE_OK 0
sqlite3_step = 21 SQLITE_ROW 100
No log do iOS5.0 Imprimir
sqlite3_prepare_v2 = 0 SQLITE_OK 0
sqlite3_step = 100 SQLITE_ROW 100
Solução
Coloque no else this, para que possamos ver o erro que está resultando.
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));
}
Outras dicas
Tente excluir seu aplicativo do seu dispositivo (ou simulador) e depois limpe e construa
Não tenho 100% de certeza, mas em relação a isso:NULO é um vazio *, nada é um eu ia
Então, se você pode mudar isso:
if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK)
Com isto:
if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, NULL)==SQLITE_OK)
Acabei de mudar nulo por NULL.Novamente, não tenho 100% de certeza, mas só vejo isso no seu código.Eu sempre uso NULL :)
Espero que esta ajuda ...