使用ODAC控件连接oracle数据库向blob字段存取照片,代码如下:  
存入照片  
   
                     pjpg:=tjpegimage.Create;  
                     pic:=TMemoryStream.Create;  
                     try  
                           with  pjpg  do  
                               begin  
                                   LoadFromFile(opd1.FileName);  
                                   CompressionQuality:=50;  //压缩比例  
                                   Compress;  
                                   SaveToStream(pic);  
                               end;  //end  with  
 
                           pic.Position:=0;  
 
                           qryInsert.Params[22].LoadFromStream(pic,ftBlob);  
                     finally  
                           FreeAndNil(pic);  
                           FreeAndNil(pjpg);  
                           qryInsert.ExecSQL;  
                           DM_HR.hrsession.Commit;  
                     end;  
                 
读取照片  
       pjpg:=tjpegimage.Create;  
       pic:=TMemoryStream.Create;  
       try 
           tblobfield(qrySD.FieldByName('PHOTO')).savetoStream(pic); 
           pic.Position:=0;  
                                                           
           with  pjpg  do  
               begin  
                   LoadFromStream(pic);  
               end;      
                 imgPhoto.Picture.Assign(pjpg);  
         finally  
                   FreeAndNil(pic);        
                   FreeAndNil(pjpg);                                                                                                                                                          
         end;      
 
使用上述代码  
1、用ODAC存取照片到oracle:  
用这种控件此段代码将照片存入oracle数据库中  
不报错  
但是从数据库读出报错:jpeg  error  #42  
经查是  JPEG  Error  #42  =  JERR_INPUT_EOF:  Premature  end  of  input  file    
 
2、用BDE方式存取照片到oracle:  
同样的代码  
使用BDE方式访问数据库存取照片没有问题  
 
3、用BDE方式存照片到oracle中,而用ODAC空间读取照片:  
而用BDE方式将照片存入oracle  
用ODAC控件读取照片(也是用上述代码)  
没有问题  
可以正确读出  
 
估计是存储的时候,odac控件将照片存坏了  
请问是不是这个原因?是ODAC控件的bug吗?