读书人

一个用DBImage1读取图片出Stream read

发布时间: 2012-04-08 14:38:30 作者: rapoo

一个用DBImage1读取图片出Stream read error错的问题
我用ClientDataSet1来insert一张bmp图片进数据库代码如下

var
Stream:TMemoryStream;
begin



try
Stream := TMemoryStream.Create; // 创建内存流
DBImage1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中
ClientDataSet1.close;
ClientDataSet1.CommandText :='Insert into student (image1) values(:_card_image1)';
ClientDataSet1.Params.ParamByName('_card_image1').LoadFromStream(Stream,ftBlob); // 读取保存的内存图
ClientDataSet1.Execute;
finally
Stream.Free; // 释放内存流
end;


因为我必须要用Insert语句来实现插入图片的方法所以我找到了这个方法,但奇怪的是我保存的时候没出错,但是用DBImage1读取图片出Stream read error错,这是何原因,麻烦各位大哥帮忙看看,小弟万分感谢!

[解决办法]
LoadFromStream前加Stream.Position:=0

另:DBImage是感知控件,不用转换就能显示了
[解决办法]
不执行SQL提交,以

Delphi(Pascal) code
with ClientDataSet1 do  begin  Append;  FieldByName('imgid').Asstring := 1;  TBlobField(FieldByName('imgsize')).LoadFromFile(FileName);  Post;  end;
[解决办法]
TBlobField(ClientDataSet1.Params.ParamByName('_card_image1')).LoadFromFile();

用这个试试,不知道可不可行
[解决办法]
DBImage1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中
DBImage1有没有图片?改成添加用Image,显示用DBImage(DBImage只显示bmp)

取图片是怎么取的?DBImage不用写代码,只关联datasource,dataset即可

读书人网 >.NET

热点推荐