SQL数据库 :使用IMAGE控件存放图片,使用OpenPictureDialog组件读文件,读取图片如下: if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
//根据文件为bmp和JPG方式,存数据库操作如下:(数据表为adoquery) procedure TxxForm.SaveToDBC(Sender:TObject); var ext:string; begin if image1.Picture.Graphic<>nil then begin try dm.ADc.BeginTrans; adoquery.Edit; adoquery.FieldByName('photo').Assign(image1.Picture.Graphic); //以下记录保存到数据库的图像格式 ext:=extractfileext(openpicturedialog1.FileName); if uppercase(ext)='.BMP'THEN adoquery.FieldByName('isbmp').Value:=1 ELSE IF(UPPERCASE(EXT)='.JPEG')OR(UPPERCASE(EXT)='.JPG') THEN adoquery.FieldByName('isbmp').Value:=2; adoquery.Post; dm.adc.CommitTrans; except DM.ADC.RollbackTrans; showmessage('图片保存失败!'); end; end; end;从数据表中显示图片: procedure TxxForm.DisImage; var jpegimage:tjpegimage; begin Image1.Picture.Graphic:=nil; //BMP、JPEG两种图像数据必需分别处理 if adoquery.FieldByName('isbmp').AsString='1'then begin Image1.Picture.Bitmap.Assign(adoquery.FieldByName('photo')); end else if adoquery.FieldByName('isbmp').AsString='2'then begin jpegimage:=tjpegimage.Create; //通过jpegimage将图像显示在image1,否则会出错 try jpegimage.Assign(adoquery.FieldByName('photo')); Image1.Picture.Graphic:=jpegimage; finally jpegimage.Free; end; end; end.
和这个贴子差不多,用tblobfield
存到DATABASE裏面,MSSQL用IMAGE字段 TBlobField 來存如果是存到文件夾,可以用 FTP 上傳下載
ADOQuery1.Edit;
TBlobField(ADOQuery1.FieldByName('photo')).LoadFromFile('本地路径');
ADOQuery1.Post;
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
//根据文件为bmp和JPG方式,存数据库操作如下:(数据表为adoquery)
procedure TxxForm.SaveToDBC(Sender:TObject);
var
ext:string;
begin
if image1.Picture.Graphic<>nil then
begin
try
dm.ADc.BeginTrans;
adoquery.Edit;
adoquery.FieldByName('photo').Assign(image1.Picture.Graphic);
//以下记录保存到数据库的图像格式
ext:=extractfileext(openpicturedialog1.FileName);
if uppercase(ext)='.BMP'THEN
adoquery.FieldByName('isbmp').Value:=1
ELSE
IF(UPPERCASE(EXT)='.JPEG')OR(UPPERCASE(EXT)='.JPG') THEN
adoquery.FieldByName('isbmp').Value:=2;
adoquery.Post;
dm.adc.CommitTrans;
except
DM.ADC.RollbackTrans;
showmessage('图片保存失败!');
end;
end;
end;从数据表中显示图片:
procedure TxxForm.DisImage;
var
jpegimage:tjpegimage;
begin
Image1.Picture.Graphic:=nil;
//BMP、JPEG两种图像数据必需分别处理
if adoquery.FieldByName('isbmp').AsString='1'then
begin
Image1.Picture.Bitmap.Assign(adoquery.FieldByName('photo'));
end
else
if adoquery.FieldByName('isbmp').AsString='2'then
begin
jpegimage:=tjpegimage.Create;
//通过jpegimage将图像显示在image1,否则会出错
try
jpegimage.Assign(adoquery.FieldByName('photo'));
Image1.Picture.Graphic:=jpegimage;
finally
jpegimage.Free;
end;
end;
end.
千万记得要区分BMP和JPG
还有别忘记发奋(分)哦``
呵呵