Image non stockée dans sqlite

J'ai fait une démo qui stocke une image dans la database. Actuellement, je ne reçois aucune erreur mais mon image n'est pas stockée dans la database sqlite. S'il vous plaît voir le code ci-dessous et dites-moi où est mon erreur.

Classe DBManager

sqlite3 *sqlite3DatabaseObject; sqlite3_stmt* sqlite3Statement; -(void)database { directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); documentsDirectory = [directoryPaths objectAtIndex:0]; NSSsortingng * databasePath = [[NSSsortingng alloc]initWithSsortingng:[documentsDirectory ssortingngByAppendingPathComponent:@"informationdb.sql"]]; NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:databasePath] == NO) { const char *dbPath = [databasePath UTF8Ssortingng]; if (sqlite3_open(dbPath, &sqlite3DatabaseObject)== SQLITE_OK) { char * errorMessage; const char *sqlite3Query = "CREATE TABLE IF NOT EXISTS PICTURES (PHOTO BLOB)"; if (sqlite3_exec(sqlite3DatabaseObject, sqlite3Query, NULL, NULL, &errorMessage)!= SQLITE_OK) { NSLog(@"failed = %@",sqlite3DatabaseObject); } sqlite3_close(sqlite3DatabaseObject); }else{ NSLog(@"failed to create database"); } } } - (void) SaveImagesToSql: (NSData*) imgData { NSSsortingng *databasePath = [[NSBundle mainBundle] pathForResource:@"informationdb" ofType:@"sql"]; const char* sqlite3Query = "INSERT INTO PICTURES (PHOTO) VALUES (?)"; int openDatabaseResult = sqlite3_open_v2([databasePath UTF8Ssortingng], &sqlite3DatabaseObject, SQLITE_OPEN_READWRITE , NULL); if (openDatabaseResult == SQLITE_OK) { int sqlite3Prepare = sqlite3_prepare_v2(sqlite3DatabaseObject, sqlite3Query, -1, &sqlite3Statement, NULL); if( sqlite3Prepare == SQLITE_OK ) { sqlite3_bind_blob(sqlite3Statement, 1, [imgData bytes], [imgData length], SQLITE_TRANSIENT); sqlite3_step(sqlite3Statement); } else { NSLog(@"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject)); } sqlite3_finalize(sqlite3Statement); } else NSLog( @"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject) ); sqlite3_close(sqlite3DatabaseObject); } 

Classe ViewController

 - (void)viewDidLoad { [super viewDidLoad]; DBManager * dbmClass = [[DBManager alloc]init]; [dbmClass database]; imgView.userInteractionEnabled = YES; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(uploadOrCapture)]; [singleTap setNumberOfTapsRequired:1]; [imgView addGestureRecognizer:singleTap]; } - (IBAction)btnSave:(id)sender { DBManager*dbmClass = [[DBManager alloc]init]; NSData *imageInData = UIImagePNGRepresentation(imgView.image); [dbmClass SaveImagesToSql:imageInData]; [self dismissViewControllerAnimated:YES completion:nil]; } 

Je ne suis pas capable de find le problème. Il exécute avec succès tout le code, mais quand je télécharge la database à partir de l'appareil et vérifié, il n'y a pas de données d'image stockées.

Merci d'avance.
Mihir.

il suffit de replace cette fonction à mon code parce que vous avez tort le path de la database

 - (void) SaveImagesToSql: (NSData*) imgData { directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); documentsDirectory = [directoryPaths objectAtIndex:0]; NSSsortingng * databasePath = [[NSSsortingng alloc]initWithSsortingng:[documentsDirectory ssortingngByAppendingPathComponent:@"informationdb.sql"]]; const char* sqlite3Query = "INSERT INTO PICTURES (PHOTO) VALUES (?)"; int openDatabaseResult = sqlite3_open_v2([databasePath UTF8Ssortingng], &sqlite3DatabaseObject, SQLITE_OPEN_READWRITE , NULL); if (openDatabaseResult == SQLITE_OK) { int sqlite3Prepare = sqlite3_prepare_v2(sqlite3DatabaseObject, sqlite3Query, -1, &sqlite3Statement, NULL); if( sqlite3Prepare == SQLITE_OK ) { sqlite3_bind_blob(sqlite3Statement, 1, [imgData bytes], [imgData length], SQLITE_TRANSIENT); sqlite3_step(sqlite3Statement); } else { NSLog(@"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject)); } sqlite3_finalize(sqlite3Statement); } else NSLog( @"Error is: %s", sqlite3_errmsg(sqlite3DatabaseObject) ); sqlite3_close(sqlite3DatabaseObject); } 

ici c'est la capture d'écran de database

entrez la description de l'image ici

Ne faites pas glisser vers la database dans votre projet. Si vous avez un problème, dites-le moi

Voici comment je modifie selon votre utilisation.

 NSData *imageData = UIImagePNGRepresentation(imgView.image); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSSsortingng *documentsDirectory = [paths objectAtIndex:0]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeStyle: NSDateFormatterShortStyle]; dateFormatter.dateFormat = @"ddMMyyyyhhmmss_SSS_a"; NSSsortingng *currentTime = [dateFormatter ssortingngFromDate: [NSDate date]]; NSSsortingng *imageName=[NSSsortingng ssortingngWithFormat:@"Image_%@",currentTime]; NSSsortingng *saveFilePath =[NSSsortingng ssortingngWithFormat:@"%@.%@",imageName,@"png"]; //Store saveFilePath ssortingng to your database NSSsortingng *localFilePath1 = [documentsDirectory ssortingngByAppendingPathComponent:saveFilePath]; [imageData writeToFile:localFilePath1 atomically:YES]; 

J'espère que cela vous aide.