如何在iphone中的sqlite数据库中插入图像

问题描述:

如何在数据库中插入图像,我试过,但没有插入。查询中的问题在哪里?这是我的模型类.m文件:sqlite3_prepare_v2之后的文件中的代码我的跟踪未插入sqlite3_bind_blob它直接在sqlite3_prepare_v2之后。这里有什么问题,请帮助我。在这里保存数据是错误的。在模型类我创建UIImage* Photo;,使协议和sys如何在iphone中的sqlite数据库中插入图像

+(void)SaveImagesToSql:(NSData *)imgDat :(int)getid 
{ 
    NSString *filePath = [BaseModal getDBPath]; 
    sqlite3 *database; 
    sqlite3_stmt *updStmt; 
    NSLog(@"%@",filePath); 
    if (sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) 
    { 
     NSString* sqliteQuery = [NSString stringWithFormat:@"UPDATE INTO Peoples (Photo) VALUES (?) where PeopleId =%i",getid]; 

     if(sqlite3_prepare_v2(database, [sqliteQuery UTF8String] , -1, &updStmt, NULL) == SQLITE_OK) { 

      sqlite3_bind_blob(updStmt, 1, [imgDat bytes], [imgDat length], NULL); 

     } 
     sqlite3_finalize(updStmt); 
    } 
    sqlite3_close(database); 
} 

这是我的view.m文件我是从这个页面中选择图像,然后插入到源码文件

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    //UIImageWriteToSavedPhotosAlbum(imageView.image, self, nil, nil); 

    NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); 
    NSString *docDirectory = [sysPaths objectAtIndex:0]; 
    NSString *filePath = [NSString stringWithFormat:@"%@", docDirectory]; 
    NSLog(@"thiss%@",filePath); 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

    if(picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {  
     UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 
     [picker dismissModalViewControllerAnimated:YES]; 
     return; 
    } 


    [picker release]; 
    UIImage *image1 =imageView.image; 
    NSData *myData = UIImagePNGRepresentation(image1); 

    [PeopleModal SaveImagesToSql:myData :peopleid]; 

    //[self.parentViewController dismissModalViewControllerAnimated:YES]; 

    [picker dismissModalViewControllerAnimated:YES]; 



} 
+3

不要将数据存储在文档目录中的database.ave图像中,然后将该路径保存到数据库中... – Narayana 2012-02-28 09:40:12

你不应该插入的斑点在分贝,这将使你的分贝非常非常缓慢!

您应该将图像保存在应用程序的文档目录中,并在数据库中仅保存图像的路径。