سلام دوستان . من برای اینکه یه jpeg رو در بانک sql ذخیره کنم روشهای زیادی رو تست کردم ولی هر کدوم یه error مخصوص به خودشون بود. یه روشی از یه سایت پیدا کردم که تقریبا جواب میده .
اونو خدمت دوستان میگذارم که اگه دوستان مشکل مشابه داشتن مثل من الاف نشن
اول در قسمت طراحی بانک نوع عکس رو image بگیرید.
در سورس برنامهuses jpeg, dbرو اضافه کنید .
کلاسهای استفاده شده در برنامه اینها هستند :
کد:
کد:
type
  TfrmMain = class(TForm)
    GroupBox1: TGroupBox;
    Label3: TLabel;
    dbDemos: TABSDatabase;
    tPhotoAlbum: tadoTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    btSaveImage: TButton;
    odBlob: TOpenDialog;
    sdBlob: TSaveDialog;
    btLoadImage: TButton;
    GroupBox2: TGroupBox;
    Photo: TImage;
برای ذخیره از کد زیر استفاده کنید
کد:
کد:
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
 if (odBlob.Execute) then
   begin
     tPhotoAlbum.Edit;
     try
       BlobStream := tPhotoAlbum.CreateBlobStream(tPhotoAlbum.FieldByName('Photo'),bmWrite);
       FileStream := TFileStream.Create(odBlob.FileName,fmOpenRead or fmShareDenyNone);
       BlobStream.CopyFrom(FileStream,FileStream.Size);
       FileStream.Free;
       BlobStream.Free;
       tPhotoAlbum.Post;
       tPhotoAlbumAfterScroll(tPhotoAlbum);
     except
       tPhotoAlbum.Cancel;
     end;
   end;
برای نشان دادن عکس نمی توان از dbimage استفاده کرد باید از image استفاده کنید
برای نشان دادن داریم :
کد:
کد:
var
  JpegImage: TJPEGImage;
  BlobStream: TStream;
begin
  if (not tPhotoAlbum.FieldByName('Photo').IsNull) then
    begin
      BlobStream := tPhotoAlbum.CreateBlobStream(tPhotoAlbum.FieldByName('Photo'),bmRead);
      JpegImage := TJPEGImage.Create;
      try
        JpegImage.LoadFromStream(BlobStream);
        Photo.Picture.Assign(JpegImage);
        Photo.Visible := True;
      finally
        JpegImage.Free;
        BlobStream.Free;
      end;
    end
  else
    Photo.Visible := False;
end;
__________________