Jusqu'à présent, j'ai réussi à créer cette méthode pour insérer dans une base de données SQLite sur l'iPhone:Insertion NSData dans SQLite sur l'iPhone
- (void) insertToDB :(NSString *)Identifier :(NSString *)Name
{
sqlite3 *database;
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
char *sql1 = "INSERT INTO table VALUES ('";
const char *sql2 = [Identifier cStringUsingEncoding:[NSString defaultCStringEncoding]];
char *sql3 = "', '";
const char *sql4 = [Name cStringUsingEncoding:[NSString defaultCStringEncoding]];
char *sql5 = "')";
char *sqlStatement[255];
strcpy(sqlStatement, sql1);
strcat(sqlStatement, sql2);
strcat(sqlStatement, sql3);
strcat(sqlStatement, sql4);
strcat(sqlStatement, sql5);
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
sqlite3_last_insert_rowid(database);
sqlite3_reset(compiledStatement);
}
sqlite3_finalize(compiledStatment);
}
sqlite3_close(database);
}
Maintenant, je suis à la recherche à stocker une image dans la base de données. Jusqu'à présent, j'ai found this:
UIImage *cachedImage = [UIImage imageNamed:@"Icon.png"];
NSData *dataForImage = UIImagePNGRepresentation(cachedImage);
Mais je vais avoir du mal à essayer d'insérer ce NSData dans le tableau de caractères qui rend le instructionSQL. Quelqu'un a une idée de comment faire ça?
(J'ai un champ dans la base de données de type blob pour cela).
Merci
Ne pas * mettre * BLOBs dans la base de données. C'est horriblement inefficace à tous les niveaux. Enregistrez un chemin dans la base de données et placez le BLOB dans le système de fichiers. – bbum
Je recommanderais fortement l'utilisation du wrapper de base de données Flying Meat, qui a déjà résolu tous ces problèmes pour vous et est * beaucoup * plus simple à utiliser: http://github.com/ccgus/fmdb –