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 
Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top