我用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错,这是何原因,麻烦各位大哥帮忙看看,小弟万分感谢!
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错,这是何原因,麻烦各位大哥帮忙看看,小弟万分感谢!
begin
Append;
FieldByName('imgid').Asstring := 1;
TBlobField(FieldByName('imgsize')).LoadFromFile(FileName);
Post;
end;
这样子提交到数据库问题少些,数据库字段为IMAGE类型
LoadFromStream前加Stream.Position:=0我加了这句保存没问题但用DBImage1直接连接数据库读取图片出却还是出Stream read error错,麻烦再帮看看,万分感谢!
to case5166
呵,因为某种原因我必须要用sql语句来实现,麻烦再帮看看,万分感谢!
DBImage1有没有图片?改成添加用Image,显示用DBImage(DBImage只显示bmp)取图片是怎么取的?DBImage不用写代码,只关联datasource,dataset即可
DBImage1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中
DBImage1有没有图片?改成添加用Image,显示用DBImage(DBImage只显示bmp)在DBImage1里是有图片的我是通过
if OpenDialog1.Execute() then
begin
DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
end;来添加图片,而且添加的都是bmp图片,添加的时候没报错,而且我用DBImage是直接关联数据库的,没写任何代码
我用access(OLE 对象)来做是显示正常的,但换成sql server(image)来做就会报错,麻烦再帮看看,万分感谢
我现在用的是ADOQuery1+DataSetProvider1+ClientDataSet1来操作的,我原来直接用ADOQuery1来操作是可以保存图片的,但加了DataSetProvider1+ClientDataSet1后就保存不了了是不是要设置DataSetProvider1里的什么属性呀,麻烦各位大哥帮看看,小弟万分感谢