3

I have saved my image and text into the sqlite3 database by clicking saveInfo button.

- (IBAction)saveInfo:(id)sender {

    // Prepare the query string.
    NSString *query;

    if (self.recordIDToEdit == -1) {

        query = [NSString stringWithFormat:@"insert into empInfo values('%@', '%@','%@','%@','%@','%@' )", self.txtEmpCode.text, self.txtName.text, self.txtDesignation.text,self.txtDepartment.text,self.txtTagline.text,self.saveImage.image];
    }

    else{

        query = [NSString stringWithFormat:@"update empInfo set name='%@',empInfoCode='%@',designation='%@',department='%@',tagLine='%@',photo='%@' where empInfoCode=%d", self.txtEmpCode.text,self.txtName.text, self.txtDesignation.text,self.txtTagline.text,self.txtDepartment.text,self.saveImage.image, self.recordIDToEdit];

    }


    // Execute the query.--------------

        [self.dbManager executeQuery:query];

    //   If the query is sucessfull the show this in the dubugger.
    if (self.dbManager.affectedRows != 0) {

        NSLog(@"Query was executed successfully. Affected rows = %d", self.dbManager.affectedRows);

        // Here we inform the delegate that editing in app is finished.

        [self.delegate editingInfoWasFinished];

        // Pop the view controller.
        [self.navigationController popViewControllerAnimated:YES];
    }
    else{
        NSLog(@"%d",self.dbManager.affectedRows);
        NSLog(@"---Could not execute the query.----");
    }

}

Then I load the data in this method, I'm able to access the text data but can't load the image in this method.

-(void)loadInfoToEdit{

    // Create the query.

    NSString *query = [NSString stringWithFormat:@"select * from empInfo where empInfoCode=%d", self.recordIDToEdit];

    // Load the relevant data.

    NSArray *results = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:query]];

    // Setting the loaded data to the textfields and imageView.
.
    self.txtEmpCode.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"empInfoCode"]];

    self.txtName.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"name"]];

    self.txtDesignation.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"designation"]];

     self.txtTagline.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"tagLine"]];

    self.txtDepartment.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"department"]];

self.saveImage.image = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"photo"]];

  //  NSLog(@"This photo has:%@",[[results objectAtIndex:0]objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"photo"]]);

  //  self.saveImage.image= [[results objectAtIndex:0]objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"photo"]];

//    NSLog(@"This Nsdata object has %@",img);
//    self.saveImage.image = [UIImage imageWithData:img];

}

How can I load my image into saveImage(UIImageView property)?

2 Answers 2

3

You should save your image in your document directory. For that you should first convert image to data and then you should save(or write) that data to documentdirectory. and you should save name of image to your sqlite database

Now, when you fetch data from your database, you will got imagename, by that imagename you can fetch your saved image data from document directory and you can convert that data to image and can use as per requirement.

Example :

save image,

   NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

 NSString *profilePicturePath = [docsDir stringByAppendingPathComponent:@"profilePicture"];

 NSData *data = UIImageJPEGRepresentation(yourImage, 1.0);

 [data writeToFile:profilePicturePath atomically:NO];

You can retrieve image like,

 UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfFile:profilePicturePath]];
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks a lot @Lion.
I can't update the image when I try to insert next image ??It shows the same image which was inserted for the last person..
Give unique name to image everytime. Ideally you should use timestamp for naming. And name in your database and in path of image must be same.
0

You can't save image simply like saving string data. You will have to convert image into NSData and then save it using

sqlite3_bind_blob(statement, 2, [imgData bytes], [imgData length], SQLITE_TRANSIENT);

For more info please see this;

1 Comment

Thanks @vishal sonawane

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.