2016-07-20 4 views
2

Я сохранил мое изображение и текст в базу данных sqlite3 нажав saveInfoкнопку.ИОС отображения изображения из базы данных SQLite

- (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.----"); 
    } 

} 

Затем я загрузить данные в этом методе, я могу получить доступ к текстовой информации, но не может загрузить изображение в этом методе.

-(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]; 

} 

Как я могу загрузить мой образ в saveImage (UIImageView собственность)?

ответ

2

Вы должны сохранить свое изображение в своем каталоге документа. Для этого вы должны сначала преобразовать изображение в данные, а затем сохранить (или записать) эти данные в documentdirectory. и вы должны сохранить имя образа на sqlite database

Теперь, когда вы запрашиваете данные из базы данных, вы получили ImageName, к тому imagename вы можете получить ваши данные, сохраненные изображения из document directory и вы можете конвертировать эти данные изображения и может использовать согласно требованию.

Пример:

сохранить изображение,

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

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

NSData *data = UIImageJPEGRepresentation(yourImage, 1.0); 

[data writeToFile:profilePicturePath atomically:NO]; 

Вы можете получить изображение, как,

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfFile:profilePicturePath]]; 
+0

спасибо @Lion. –

+0

Добро пожаловать ... :) – Lion

+0

Я не могу обновить изображение, когда я пытаюсь вставить следующее изображение. Он показывает то же изображение, которое было вставлено для последнего человека. –

0

Вы не можете сохранить изображение просто как сохранение строковых данных. Вы должны преобразовать изображение в NSData, а затем сохранить его с помощью

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

Для получения дополнительной информации см this;

+0

Благодаря @vishal Sonawane –

Смежные вопросы