PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ذخیره عکس jpegدر sql server



TAHA
10-01-2009, 05:01 PM
سلام دوستان . من برای اینکه یه 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.FieldByNa me('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.FieldByNa me('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;

__________________