将一个图片存到数据库中去,已经解决了。但是如果将图片为空的话,就会出错。我试着用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;请问这种情况应该怎么办?
解决方案 »
- delphi 中alter怎么使用啊
- 条码打印机问题
- 读取XML文件错误。为什么无法正确获取子节点数呢?
- 请教 数据库备份问题,急
- 一个rm文件(只有音频,没有视频)如何转成mp3文件,有什么工具可以直接用?
- 怎样实时的跟踪一个edit控件,判断它是否获得焦点
- xp+VM+98+D5问题·菜鸟求解
- 我喜欢COMBOBOX的下拉式的外观,但它不能实现象LISTBOX一样的多选,有没有办法使COMBOBOX或DBCOMBOBOX能够实现多选?
- 菜单上如何加快捷方式?--》初学者的问题
- 如何使用网卡进行直接通讯?
- 请教,如何定位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,减少数据库的大小。