比如我现在有一个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怎么写啊?请给出明确的代码,我已经郁闷很多天了。。如果是度取图片,又该怎么写代码呢?????

解决方案 »

  1.   

    的确,delphi对oracle的图片插入有些问题(我在网上已回过多个了)
    用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;