各位大虾,请教一个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;  运行后发现程序无响应,是不是我这个写法不对?