各位大蝦,請教一個stringgird資料匯入oracle資料庫的問題。stringgrid中記錄數有5萬余條,原先實作方式是逐條插入資料庫:
for i=0 to stringgrid.rowcount-1 do
begin
strsql:='insert into XXX (aa,bb) values ('''+值1+''','''+值2+''')';
exec_sql(adofree,strsql);
end;
但發現匯入時間要2分鐘,然后考慮用記憶體表clientdataset的方式進行匯入。實作方式如下:
1、使用控制元件有:ODAC下的Orasession和oraquery。clientdataset、datasetprovider四個控制元件.clientdataset的Providername設定為datasetprovider;datasetprovider控制元件的dataset屬性設定為oraquery;oraquery的session屬性設定為Orasession。Orasession用于跟oracle資料庫的連接。
其中clientdataset運行創建的表格式與資料庫表AA一致。
2、代碼如下:
with oraquery do
begin
close;
sql.clear;
sql.add(select * from AA);
open;
end;
clientdataset.close;
clientdataset.fielddefs.clear;
with clientdataset do
begin
add('LX',ftstring,6,false);
add('BH',ftstring,6,false);
end;
clientdataset.createdataset;
clientdataset.open;
for i=0 to grid.rowcount-1 do
begin
clientdataset.append;
clientdataset.fieldbyname('LX').asstring:='XXX';
clientdataset.fieldbyname('bh').asstring:='XXX';
clientdataset.POST;
end;
clientdataset.Applyupdate(0);
clientdataset.emptydataset;
運行后發現程式無回應,是不是我這個寫法不對?
uj5u.com熱心網友回復:
跟下代碼看看到哪里沒有回應了?還有可以在clientdataset.POST;的時候100條提交一條,然后加個回應的函式,如Application.ProcessMessages.uj5u.com熱心網友回復:

數據很多嗎 如果是上面說法是可以的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137850.html
標籤:數據庫相關
