救急 ( 积分: 50 )

  • 主题发起人 主题发起人 都当主席谁种地
  • 开始时间 开始时间

都当主席谁种地

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么向数据库表中插入图片,调出图片的程序不能运行
请帮忙指出,用image 输入图片
procedure TForm1.Button1Click(Sender: TObject); //插入圖片過程
var
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create; //創建內存流
Image1.Picture.Graphic.SaveToStream(testStream);  //將圖片保存至內存流中
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into test (id,photo) values (:id,:photo)'); //進行插入操作
adoquery1.Parameters.ParamByName('id').Value := '003';
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); //讀取保存的內存圖
adoquery1.ExecSQL;
finally
testStream.Free;   //釋放內存流
end;
end;

procedure TForm1.Button2Click(Sender: TObject); //讀取圖片過程
var
mStream:TMemoryStream;
JpgFile:TjpegImage;
begin
if not ADOQuery1.FieldByName('photo').IsNull then begin ;
mStream:=TMemoryStream.Create ;
JpgFile:=TjpegImage.Create ;
TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(mStream);  //顯示的轉換為BlobFiled並保存至內存流
mStream.Position :=0;
jpgfile.LoadFromStream(MStream);
image2.Picture.Assign(JpgFile);
end
else begin
image2.Picture :=nil;
end;
end;
 
为什么向数据库表中插入图片,调出图片的程序不能运行
请帮忙指出,用image 输入图片
procedure TForm1.Button1Click(Sender: TObject); //插入圖片過程
var
testStream:TMemoryStream;
begin
try
testStream := TMemoryStream.Create; //創建內存流
Image1.Picture.Graphic.SaveToStream(testStream);  //將圖片保存至內存流中
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into test (id,photo) values (:id,:photo)'); //進行插入操作
adoquery1.Parameters.ParamByName('id').Value := '003';
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); //讀取保存的內存圖
adoquery1.ExecSQL;
finally
testStream.Free;   //釋放內存流
end;
end;

procedure TForm1.Button2Click(Sender: TObject); //讀取圖片過程
var
mStream:TMemoryStream;
JpgFile:TjpegImage;
begin
if not ADOQuery1.FieldByName('photo').IsNull then begin ;
mStream:=TMemoryStream.Create ;
JpgFile:=TjpegImage.Create ;
TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(mStream);  //顯示的轉換為BlobFiled並保存至內存流
mStream.Position :=0;
jpgfile.LoadFromStream(MStream);
image2.Picture.Assign(JpgFile);
end
else begin
image2.Picture :=nil;
end;
end;
 
if not ADOQuery1.fieldbyname('photo').IsNull then
image2.Picture.Assign(ADOQuery1.fieldbyname('photo'));这样行吗
 
Image1.Picture.Graphic.SaveToStream(testStream);  
testStream.Postion := 0; //加上这句试试
adoquery1.Close; //不知道这里是不是应该Close掉
 
我保存和读取的是jpg,如果是bmp更简单
保存:
procedure Twlsp_sjwj.BitBtn1Click(Sender: TObject);
begin
if trim(e_tp.text)='' then
showmessage('图片位置不能为空')
else
if trim(e_mc.text)<>'' then
if wlsp_data.wlsp_sjwj.Locate('wlsp_sjwj_mc',trim(e_mc.text),[locaseinsensitive]) then
showmessage('该文件已存在')
else
begin
wlsp_data.wlsp_sjwj.append;
wlsp_data.wlsp_sjwj.FieldByName('wlsp_sjwj_mc').AsString:=e_mc.text;
wlsp_data.wlsp_sjwj.FieldByName('wlsp_sjwj_tp').AsString := e_tp.text;
wlsp_data.wlsp_sjwj.Post;
showmessage('保存成功!');
e_tp.text:='';
end
else
showmessage('文件名称不能为空');
end;

读取:
procedure Twlsp_sjwj_cx.DBGridEh1DblClick(Sender: TObject);
begin
try
begin
if trim(wlsp_data.wlsp_sjwj.fieldbyname('wlsp_sjwj_tp').asstring)='' then
showmessage('该扫描件不存在!')
else
image1.Picture.LoadFromFile(trim(wlsp_data.wlsp_sjwj.fieldbyname('wlsp_sjwj_tp').asstring));
end;
except
showmessage('该扫描件不存在!')
end;
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
669
import
I
I
回复
0
查看
790
import
I
后退
顶部