在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创建一个文件,
然后存入表中。
取信息时,相反。
但都不成,请高手指点,谢谢。
如何向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创建一个文件,
然后存入表中。
取信息时,相反。
但都不成,请高手指点,谢谢。
解决方案 »
- 请教Delphi中偏移问题
- word问题!!急!
- sql语句,往oracle数据库中插入时间数据?
- 高手请进:如何在别人的程序的铵钮事件中,能够调用我编写程序的指定过程
- directorylistbox如何设置就能单击选中其显示的文件夹
- 求ComboBox中Items里的内容过长的解决方法
- delphi中定时器该如何写?
- 小弟有难了,情兄弟姐妹们帮一下!!DELPHI 如呵取ACCESS库中TEXT类型的数据??????
- 序号问题(100分)
- 有关SQL的查询问题:是SQL的先天不足,还是?罢了,君子到此,鄙人尽力上一杯茶水。
- 一个关于描述家庭各成员与户主关系算法的问题,请各位赐教
- 如果用字符指针一次读出一个汉字????
用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;