J'essaie donc de travailler avec SQLite dans l'une des applications iPhone et j'utilise la bibliothèque sqlite3. Je suis capable d'accéder à la base de données et même de faire une requête; en fait, la requête accède aux données exactes mais pour une raison quelconque, la chaîne que je récupère est un entier long et non la chaîne que je cherchais. Voici la base de données et le code:iPhone Base de données SQLite Lecture et écriture
Filename: Package.sql Table Lessons LessonID VARCHAR(64) Primary Key | LessonName VARCHAR(100) | EntryDate (DATETIME) | Chrono VARCHAR (20) bfow02nso9xjdo40wksbfkekakoe29ak | Learning The History | 2010-08-05 16:24:35 | 0001
et le code iPhone
... -(NSString *)getRow:(NSString *)tablename where:(NSString *)column equals:(NSString *)value { const char *query = [[[[[[[@"SELECT * FROM `" stringByAppendingString:tablename] stringByAppendingString:@"` WHERE `"] stringByAppendingString:column] stringByAppendingString:@"` = '"] stringByAppendingString:value] stringByAppendingString:@"';"] cStringUsingEncoding:NSUTF8StringEncoding]; NSString *result; if(sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK) { sqlite3_stmt *compiledQuery; if(sqlite3_prepare_v2(database, query, -1, &compiledQuery, NULL) == SQLITE_OK) { while(sqlite3_step(compiledQuery) == SQLITE_ROW) { NSString *str_temp = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledQuery, 2)]; result = str_temp; } sqlite3_finalize(compiledQuery); } sqlite3_close(database); } return result; } ...
Lorsque le code est exécuté:
CDatabase *db = [[CDatabase alloc]initWithDatabase:@"Package.sql"]; NSString *result = [db getRow:@"Lessons" where:@"Chrono" equals:@"0001"];
la valeur renvoyée résultat NSString de * a une valeur de "1364111" . Pourquoi fait-il ça ??? Il devrait être "Apprendre l'historique"
Vous devriez essayer FMDatabase de Gus Mueller. Je l'utilise dans mes projets, et cela fait très bien le travail. (N'oubliez pas de conserver l'objet FMDatabase si vous voulez l'utiliser dans toute l'application.) –