在Delphi中如何文访问oracle中的Clob字段的信息
如何向Clob类型的字段中增加信息,我想在Clob字段中存储一个Word文档(很大)
表结构:
create table temp_test(
a number not null,
b clob not null
)
alter table temp_test add primery key(a);commit;然后我用delphi写程序,增加数据,
再进行浏览。
我的解决办法是这样的:
利用delphi中的OLE_Container这个控件
首先:加一个opendialog这个对话框,选择一个文档,然后
利用ole_container创建一个文件,
然后存入表中。
取信息时,相反。
但都不成,请高手指点,谢谢。

解决方案 »

  1.   


    用OLE代碼如下:(樓主本人的)//Save Paper
    procedure TfrmResPaper.bbnSavePaperClick(Sender: TObject);
    var
        Query:TADOQuery;
        Stream:TADOBlobStream;
    begin
        if not ((OlePaper.State=osLoaded) and
            (DMResPaper.State=dsBrowse) and (DMResPaper.RecordCount>0))  then Exit;
        Query:=TADOQuery.Create(nil);
        with Query do
        begin
            Connection:=Pubconn;
            SQL.Clear;
            SQL.Add('SELECT ID,RES_NO,PAPER FROM B_PAPER WHERE ID='+DMResPaper.FieldByName('ID').AsString
                    +' AND RES_NO='''+DMResPaper.FieldByName('RES_NO').AsString+'''');
            Open;
            Edit;
            Stream:=TADOBlobStream.Create(TBlobField(FieldByName('PAPER')),bmReadWrite);
            try
                try
                    OlePaper.SaveToStream(Stream);
                finally
                    Stream.Free;
                end;
                Post;
                EpsDLG('圖紙保存成功!');
            except
                EpsDLG('圖紙保存失敗!');
            end;
            Query.Free;
        end;
    end;//Load Paper
    procedure TfrmResPaper.dgMainDblClick(Sender: TObject);
    var
        Query:TADOQuery;
        Stream:TADOBlobStream;
    begin
      inherited;
      if not ((DMResPaper.State=dsBrowse) and (DMResPaper.RecordCount>0))  then Exit;
        Query:=TADOQuery.Create(nil);
        with Query do
        begin
            Connection:=Pubconn;
            SQL.Clear;
            SQL.Add('SELECT ID,RES_NO,PAPER FROM B_PAPER WHERE ID='+DMResPaper.FieldByName('ID').AsString
                    +' AND RES_NO='''+DMResPaper.FieldByName('RES_NO').AsString+''' AND PAPER IS NOT NULL');
            Open;
            if RecordCount=0 then
                OlePaper.DestroyObject
            else
            begin
                Stream:=TADOBlobStream.Create(TBlobField(FieldByName('PAPER')),bmRead);
                try
                    OlePaper.LoadFromStream(Stream);
                finally
                    Stream.Free;
                end;
            end;
            Query.Free;
        end;
    end;
      

  2.   

    參考http://expert.csdn.net/Expert/topic/2483/2483251.xml?temp=.4762842