将一个图片存到数据库中去,已经解决了。但是如果将图片为空的话,就会出错。我试着用null,nil,和0x0试过了,都不行。不知道因为用什么参数传进去。
程序:
adoproc.paramters.add;
adoproc.paramters[1].Direction := pdinput;
adoproc.paramters[1].DataType := ftBlob;
try
imgStream := TMemoryStream.create;
imgStream.Position:=0;
image1.Picture.Graphic.SaveToStream(imgStream);
adoproc.paramters[1].LoadFromStream(imgStream,ftBlob);
imgStream.free;
except
adoproc.paramters[1].value=null/nil/'0x0' //这几种方式都不行,会出错
end;请问这种情况应该怎么办?
程序:
adoproc.paramters.add;
adoproc.paramters[1].Direction := pdinput;
adoproc.paramters[1].DataType := ftBlob;
try
imgStream := TMemoryStream.create;
imgStream.Position:=0;
image1.Picture.Graphic.SaveToStream(imgStream);
adoproc.paramters[1].LoadFromStream(imgStream,ftBlob);
imgStream.free;
except
adoproc.paramters[1].value=null/nil/'0x0' //这几种方式都不行,会出错
end;请问这种情况应该怎么办?
解决方案 »
- 一个简单的网络问题: 使用什么控件可以调用如下语句:http://xxx.xxx.xx.xx/Test.asp?? (youngzy )
- 请教在datamodule里用BDE的database和query,为什么append一条数据就死机?用table就可以?在线等
- 三层中,如何修改数据库中的记录?
- 我想实现在Edit控件里输入词的开头一个字时,旁边就出现可能词选择,就象输入法,急!
- delphi 操作excel表
- 有时我想undo刚才编写的内容,但发现菜单栏相关内容是灰色的,我该如何处理
- 如何读取文本文件
- !!!统计 你编写的程序最长的有多少行??软件名??
- 可否分割TDBNavigator组件的按钮面板
- XE5调用DLL问题
- 请教,如何定位ADODataSet中的记录?
- 请帮忙!如何判断两个文本框是否为空???
在线等。
我的做法是:
一、在存储的时候用'0X0'存储,因为别的都会出错的,但是'0x0'在读取的时候也是会出错的
二、在读取的时候用
try
Stream:= TMemoryStream.Create ;
TBlobField(adoproc1.FieldByName('user_pic')).SaveToStream(Stream);
jpgFile:= TJpegImage.Create ;
Stream.Position := 0;
jpgFile.LoadFromStream(stream);
image2.Picture.Assign(jpgFile);
except
image2.Picture.Graphic := nil;
end;
jpgFile.Free;
stream.Free;这样一来,问题是没有了,但是这并不是我想要的解决方案。
我希望存进去和读出来都没有错误的
//开始保存图片
if myPhoto.Picture.Graphic=nil then
TBlobField(adqBM.FieldByName('照片')).Clear
else Begin
MS:=TMemoryStream.Create;
Jpg:=TJpegImage.Create;
jpg.Assign(myPhoto.Picture.Graphic);
jpg.SaveToStream(MS);
MS.Position:=0;
TBlobField(adqBM.FieldByName('照片')).LoadFromStream(MS);
MS.Free;JPG.Free;
END;
摘自我程序中的一段。
你作相应的修改,这段还可以将图片转换为JPG,减少数据库的大小。