关于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;

运行后发现程序无响应,是不是我这个写法不对?
...全文
177 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-88 2013-03-27
  • 打赏
  • 举报
回复
數據很多嗎 如果是上面說法是可以的
xiaojun5556 2013-03-22
  • 打赏
  • 举报
回复
跟下代码看看到哪里没有响应了?还有可以在clientdataset.POST;的时候100条提交一条,然后加个响应的函数,如Application.ProcessMessages.

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧