怎样在sqlserver2000存取图片,解决了即给分,谢谢 ( 积分: 300 )

  • 主题发起人 主题发起人 xiaolongmao
  • 开始时间 开始时间
楼主是该结分了。楼上几位给的答案够全面了
 
真无聊。。。
 
这个问题其实很简单,就一个流入和流出的存取问题:
保存到数据库的Image字段:
TBlobField(AdoQuery1.FieldByName(Column_Name)).SaveToStream(Word_FileStream);

从数据库读取文件到本地硬盘:
TBlobField(ADOQuery1.FieldByName(Column_Name)).loadfromStream(Word_FileStream);
 
以前许多人说保存图片的绝对路径,实际上放在什么地方都是放在硬盘,单独存放有
丢失风险,为什么不放入数据库。
 
不建議將圖片放入數據據中
 
保存图片
procedure TForm1.Button1Click(Sender: TObject);
var
TP:tmemorystream;
JPG:Tjpegimage;
begin
if OpenPictureDialog1.Execute then
begin
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
TP:=tmemorystream.Create;
JPG:=Tjpegimage.Create;
try
JPG.Assign(image1.Picture.Graphic);
JPG.SaveToStream(TP);
TP.Position:=0;
adodataset1.Insert;
TBlobfield(adodataset1.FieldByName('TP')).LoadFromStream(TP);
adodataset1.Post;
finally
TP.Free;
JPG.Free;
end;
end;

end;
--------------------------------------------------------------------------------------------
显示图片
procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
var
TP:tmemorystream;
JPG:Tjpegimage;
begin
TP:=tmemorystream.Create;
JPG:=tjpegimage.Create;
try
tblobfield(adodataset1.FieldByName('TP')).SaveToStream(TP);
TP.Position:=0;
JPG.LoadFromStream(TP);
image2.Picture.Assign(JPG);
finally
TP.Free;
JPG.Free;
end;
end;
测试通过
 
后退
顶部