2016-07-20 2 views
2

에서 나는 saveInfo버튼을 클릭하여 sqlite3를 데이터베이스에 내 이미지와 텍스트를 저장했습니다.IOS 이미지 표시 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

문자열 데이터를 저장하는 것처럼 이미지를 저장할 수 없습니다. 당신은 this를 참조하십시오 더 많은 정보

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

를 사용하여 저장 한 후있는 NSData로 이미지를 변환해야합니다;

+0

감사 @vishal sonawane –