关于C/S下Clientdataset批量导入Oracle数据库问题
丢__丢 2013-03-22 05:15:37 各位大虾,请教一个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;
运行后发现程序无响应,是不是我这个写法不对?