first delete database in document directory than change all three method to my code
-(void)database
{
directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [directoryPaths objectAtIndex:0];
NSString * databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"informationdb.sql"]];
NSLog(@"database path=%@",databasePath);
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:databasePath] == NO) {
const char *dbPath = [databasePath UTF8String];
if (sqlite3_open(dbPath, &sqlite3DatabaseObject)== SQLITE_OK) {
char * errorMessage;
const char *sqlite3Query = "CREATE TABLE IF NOT EXISTS PICTURES (PHOTO BLOB,Id integer PRIMARY KEY)";
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 {
directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [directoryPaths objectAtIndex:0];
NSString * databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"informationdb.sql"]];
NSLog(@"database path=%@",databasePath);
const char* sqlite3Query = "INSERT INTO PICTURES (PHOTO) VALUES (?)";
int openDatabaseResult = sqlite3_open_v2([databasePath UTF8String], &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);
}
- (NSData*)LoadImagesFromSql
{
NSData* data = nil;
directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [directoryPaths objectAtIndex:0];
NSString * databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"informationdb.sql"]];
sqlite3_stmt *compiledStmt;
sqlite3 *db;
int i = 1;
if(sqlite3_open([databasePath UTF8String], &db)==SQLITE_OK){
NSString *insertSQL = [NSString stringWithFormat:@"SELECT PHOTO FROM PICTURES WHERE Id = %d",i];
if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStmt) == SQLITE_ROW) {
int length = sqlite3_column_bytes(compiledStmt, 0);
data = [NSData dataWithBytes:sqlite3_column_blob(compiledStmt, 0) length:length];
NSLog(@"Length : %lu", (unsigned long)[data length]);
// if(imageData == nil)
// NSLog(@"No image found.");
// else
// imgView.image = [UIImage imageWithData:imageData];
}
}
sqlite3_finalize(compiledStmt);
}
sqlite3_close(db);
return data;
}
iftest? What's wrong exactly with your code? Also, please name your method starting with a lower case.