ADODataSet 大量数据如何快速存入数据库

wn520 2009-08-06 11:41:18
ADODataSet 中有上万条记录要存入数据库中,
我开始这样写,但程序一直运行,导致界面无响应了!

for i:=0 to ADODataSet.RecordCount-1 do
begin
ADODataSet1.Append;
...
...
..
ADODataSet1.post
end;


有没有比较快点的存入数据库的方法,无响应是不是要用多线程解决啊!
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangpei2008 2009-08-06
  • 打赏
  • 举报
回复
把结果集内所有的数据遍历一遍,拼成一条INSERT语句,一并执行!
另外也可以用MSSQL的bcp、OpenRowSet等语句来实现
bdmh 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wn520 的回复:]
ADODataSet上万条记录,大部分字段是从一个a表读出,但其他几个字段是根据a表字段分析出来,所以用insert into ...select会比较麻烦,程序改动比较多。 还有请问哪个界面无响应怎样解决比较好!?
[/Quote]
麻烦归麻烦,效率归效率,想提高效率,有不想写代码,开玩笑吗
火龙岛主 2009-08-06
  • 打赏
  • 举报
回复
也可以使用多线程来避免界面假死的状况。
wn520 2009-08-06
  • 打赏
  • 举报
回复
ADODataSet上万条记录,大部分字段是从一个a表读出,但其他几个字段是根据a表字段分析出来,所以用insert into ...select会比较麻烦,程序改动比较多。 还有请问哪个界面无响应怎样解决比较好!?
hongqi162 2009-08-06
  • 打赏
  • 举报
回复
10000条记录从哪里来的是否可以使用OpenDataSource/OpenRowset 进行连接,然后使用insert into ...select ....来实现数据的插入
ZyxIp 2009-08-06
  • 打赏
  • 举报
回复
如果可以用SQL语句完成就直接全部用SQL语句。

否则就先将每个Insert SQL语句生成,保存到List 中,然后放在线程中一条条的执行

什么样的业务会一下子读取这么多的记录,然后又要一下子写回去呢?技术上就这些办法。
先从设计上解决一下。
阿尔萨斯 2009-08-06
  • 打赏
  • 举报
回复
哪来的这么多条记录,用INSERT插入

2,497

社区成员

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

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