Problème de récupération de données SQLite3
ali59a
Membre
Bonjour,
Je débute en développement ios, et je suis actuellement entrain de travailler sur un petit projet.
Mon problème est le suivant :
J'ai créé une petite base de données en se servant du module sqliteManager de firefox et dans mon code j'ai une méthode qui permet de récupérer les données d'une table.
Par contre, j'ai toujours un message d'erreur comme quoi la table n'existe pas !.
Pouvez-vous m'aider à résoudre ce problème ?
Je débute en développement ios, et je suis actuellement entrain de travailler sur un petit projet.
Mon problème est le suivant :
J'ai créé une petite base de données en se servant du module sqliteManager de firefox et dans mon code j'ai une méthode qui permet de récupérer les données d'une table.
<br />
-(NSMutableArray *)getAllCountryOf:(NSString *)continent{<br />
NSMutableArray *tempCountryArray = [[NSMutableArray alloc]init];<br />
@try {<br />
NSFileManager *fileMgr = [NSFileManager defaultManager];<br />
NSString *dbPath = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"MyCountryDataBase.sqlite"];<br />
BOOL success = [fileMgr fileExistsAtPath:dbPath];<br />
if(!success){<br />
NSLog(@"Cannot locate dataBase File %@.",dbPath);<br />
}<br />
if(!(sqlite3_open([dbPath UTF8String],&db) == SQLITE_OK)){<br />
NSLog(@"An error has Occured!!");<br />
}<br />
//La requete<br />
NSString *sql = @"SELECT Country_Name,Country_Flag FROM CountryTable";<br />
sqlite3_stmt *sqlStatement; <br />
if(sqlite3_prepare_v2(db,[sql UTF8String], -1, &sqlStatement, NULL) != SQLITE_OK){<br />
printf("could not prepare statemnt: %s\n", sqlite3_errmsg(db));<br />
}<br />
//Pour le moment j'ai pas testé la boucle, vu qu'il n'arrive pas à récupérer les données<br />
while (sqlite3_step(sqlStatement) == SQLITE_ROW) {<br />
CountryListDec *country = [[CountryListDec alloc]init];<br />
country.countryName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,1)];<br />
//Pour la photo<br />
const char *raw = sqlite3_column_blob(sqlStatement, 2);<br />
int rawLen = sqlite3_column_bytes(sqlStatement, 2);<br />
NSData *data = [NSData dataWithBytes:raw length:rawLen];<br />
<br />
country.countryFlag = [[UIImage alloc] initWithData:data];<br />
[tempCountryArray addObject:country];<br />
}<br />
}//try<br />
@catch (NSException *exception) {<br />
NSLog(@"An exception occured: %@", [exception reason]);<br />
}<br />
@finally {<br />
return tempCountryArray;<br />
}<br />
Par contre, j'ai toujours un message d'erreur comme quoi la table n'existe pas !.
Pouvez-vous m'aider à résoudre ce problème ?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce qu'il se passe c'est que il va importer la bdd de ton projet dans le simulateur seulement si elle n'existe pas.
Donc quand je mettais à jour mes tables et que je runnais mon projet, forcément il ne trouvait pas les modifications ! (ajout d'une table ou d'un enregistrement)
La solution était donc de supprimer l'appli du simulateur pour qu'il l'a réimporte à nouveau.
Je ne sais plus où j'ai trouvé ce bout de code, je ne sais pas si cela peut t'aider, mais en tout cas ce que je peux te conseiller c'est de séparer l'initialisation des requêtes sur ta bdd.
Au passage ceci m'a bien aidé : http://www.iphonesdk...category/sqlite
Sam.
J'ai réussi à regler le problème en mettant le code ci-dessous (j'ai modifié une seule ligne), et ça à l'air de fonctionner /smile.png' class='bbc_emoticon' alt=':)' />