要在数据库里面插入一批的数据,现在是每一条数据一条insert然后若干条insert一起发送到Adoquery去执行。感觉这样做的效率不高,不知道还有没有更好的方案?
解决方案 »
- delphi adac连接Oracel问题
- NewWindow2 跨域frame打开新窗口,总是崩溃,求助
- 关于Beep()函数的使用
- 疑惑!!调用windows API KERNEL32.DLL函数的问题。
- 怎么合并第i行j列,第i+1行,第j+1列这个区域的单元格?
- 请教:怎样生成字母、数字混合的随机号?
- 如何在TXT文本中的某一行追加数据,请详解
- 如何让Listbox中的内容自动向下走,就像聊天室中自动向下滚动的效果一样!!那位教教我该怎么实现!!
- 请问如何读取文件中的32-bit Windows Time/Date Formats,4字节日期数据?
- 请谈谈你心目中的高手?
- ClientDataSet的数据库更新
- 控件(如Edit)获得焦点后显示提示的问题
http://community.csdn.net/Expert/topic/4098/4098581.xml?temp=.6427118
try
ADOConnection1.BeginTrans;
//写Adoquery.Insert或者Append;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;//更新失败时。
end;
unsigned:不知道BCP这种要怎么调用呢?查了一下联机从书,看到里面的一个例子的地址,可是我发现我能找得到的机子上都没有这个。不知道你可否提供一个呢?
谢谢各位
try
ADOConnection1.BeginTrans;
//写Adoquery.Insert或者Append;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;//更新失败时。
end;
>>支持楼上,>>如果还是不行,就使点劲
要使劲也要对得准才行^_^
try
ADOConnection1.BeginTrans;
//写Adoquery.Insert或者Append;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;//更新失败时。
end;但是感觉速度上还是不够,所以才问的。
SQL也分块了,若干条记录执行一次。
try
ADOConnection1.BeginTrans;
//写Adoquery.Insert或者Append;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;//更新失败时。
end;但是感觉速度上还是不够,所以才问的。
SQL也分块了,若干条记录执行一次。
;============================================
这样子其实在ADOQuery.Insert/Append当中是很费时的,另外甚至是ADOQuery.SQL.Add这个都显得很费时。
最好在这一过程当中还是直接对ADOQuery.SQL.Text赋值,然后调用ExecSQL方法,不过这个样子还是不及ADOCommand。当然如果是MSSQL的话可以试着使用偶在一楼提到的多个Insert语句批次提交滴方法,那样子会快很多,不过通常建议不要超过1000条/次,若是数据量比较大可以相应减少一点。比如500,而对于其它数据库还是最好能找到其多条语句传输的方法比较合理。