Question

Lorsque j'exécute la construction iOS5.0 ou moins, la réponse SQLITE correcte et récupérez les données son fonctionnement bien, mais lorsqu'il est exécuté sur iOS6.0, j'essaie d'extraire des données de ma base de données My.SQLite, mais cela n'exègre pas mon cas.Il entre toujours en tout état.Quelle mauvaise chose que je fais?Je ne suis pas capable d'exécuter mon cas si I.e. if(sqlite3_prepare_v2(database, sqlQuerry, -1, &querryStatement, NULL)==SQLITE_OK).

Pour référence, vérifiez ce code.

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
    {

    }

sur iOS6.0 Log Impression

 sqlite3_prepare_v2 = 1 SQLITE_OK 0   
 sqlite3_step = 21 SQLITE_ROW 100 

sur iOS5.0 Log Impression

sqlite3_prepare_v2 = 0 SQLITE_OK 0  
sqlite3_step = 100 SQLITE_ROW 100 

Était-ce utile?

La solution

endroit dans l'essentiel cela, nous pouvons donc voir l'erreur qui résulte ..

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));
}

Autres conseils

Essayez de supprimer votre application de votre appareil (ou de votre simulateur), puis nettoyez-vous et construire

Je ne suis pas sûr à 100% mais à ce sujet: NULL est un vide * , nil est un identifiant

Donc, si vous pouvez changer ceci:

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

whit this:

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

Je change juste nul avec NULL.Encore une fois, pas sûr de 100% mais seulement cela que je vois dans votre code.J'utilise toujours NULL :)

J'espère que cette aide ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top