Hasta ahora no hemos logrado crear este método para insertar en una base de datos SQLite en el iPhone:Inserción NSData en SQLite en el 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);
}
Ahora estoy mirando a almacenar una imagen en la base de datos. Hasta ahora he found this:
UIImage *cachedImage = [UIImage imageNamed:@"Icon.png"];
NSData *dataForImage = UIImagePNGRepresentation(cachedImage);
pero estoy teniendo problemas tratando de insertar este NSData en la matriz de caracteres que hace que el SqlStatement. Alguien tiene una idea de cómo hacer esto?
(Tengo un campo en la base de datos de tipo blob para esto).
Gracias
No * ponga los BLOB en la base de datos. Es horriblemente ineficiente en todos los niveles. Almacene una ruta en la base de datos y coloque el BLOB en el sistema de archivos. – bbum
Recomendaría * altamente utilizar la envoltura de la base de datos de Flying Meat, que ya ha resuelto todos estos problemas y es * mucho * más fácil de usar: http://github.com/ccgus/fmdb –