比如我现在有一个ORACLE的存储过程了,
procedure pro_test(v_id in varchar2,v_pic in blob) is
begin
insert into pic (id,pic) values(v_id,v_pic);
end;我要对这个存储过程进行插入图片,用DELPHI怎么写啊?请给出明确的代码,我已经郁闷很多天了。。如果是度取图片,又该怎么写代码呢?????
procedure pro_test(v_id in varchar2,v_pic in blob) is
begin
insert into pic (id,pic) values(v_id,v_pic);
end;我要对这个存储过程进行插入图片,用DELPHI怎么写啊?请给出明确的代码,我已经郁闷很多天了。。如果是度取图片,又该怎么写代码呢?????
用BDE,有对图片大小的限止,用ADO,如果用microsoft ole db provider for oracle,插入图片有问题,用oracle provider for ole db,也最好将ADO升级到2.7以上
当然,还有问题,就是ADO的TADOStoredProc对oracle 8支持也不是很好
我建议用odac,又有人说它不稳定(我用下来很好)
如果你用ADO,可以这样试试:
1..将文件读入数据库
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='begin pro_test(:id,:pic); end';
ADOQuery1.Parameters[0].Value:=1;
ADOQuery1.Parameters[1].LoadFromFile('d:\temp\025.jpg',ftBlob);
ADOQuery1.ExecSQL;
end;2.将图片从数据库中取出,并显示在TImage上
procedure TForm1.Button2Click(Sender: TObject);
VAR
MS: TMemoryStream;
Jpg:TJpegImage;
begin
MS := TMemoryStream.Create;
Jpg:=TJpegImage.Create;ADOQuery1.Close;
ADOQuery1.SQL.Text:='select id,pic from pic where id=1';
ADOQuery1.Open;
Edit1.Text:=IntToStr(ADOQuery1.FieldValues['id']);
(ADOQuery1.FieldByname('pic') AS TBlobField).SaveToStream(ms);
MS.Position :=0;
jpg.LoadFromStream(ms);
Image1.Picture.Assign(jpg);
jpg.Free;
MS.Free;
end;