以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于表新增行的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60690)

--  作者:paniwangji
--  发布时间:2014/11/29 10:42:00
--  关于表新增行的问题
假设我有3000千条数据需要新增到datatable中,目前我的方法是:
For i As Integer = 0 To 2999
        Tables("A").AddNew
        Tables("A").Current("第一列") = arrA(i,0)
        Tables("A").Current("第二列") = arrA(i,1)
        Tables("A").Current("第三列") = arrA(i,2)
Next
DataTables("A").Save


但是在实际使用过程中,程序需要逐条新增,速度很慢。
我想请教一下各位老师,因为需要对时间有要求,有没有更快的方式来添加数组中的数据,谢谢。
[此贴子已经被作者于2014-11-29 10:44:24编辑过]

--  作者:Bin
--  发布时间:2014/11/29 10:44:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=52855&skin=0
--  作者:paniwangji
--  发布时间:2014/11/29 10:48:00
--  
谢谢BIN
--  作者:paniwangji
--  发布时间:2014/11/30 17:21:00
--  
BIN老师,根据你提供地址的那个方法,我用第四种方法已经可以实现批量导入。但是现在又有一个新问题,我每次导入大概在3000条数据左右,前三次导入都没有问题,第四次总是出现《引发类型为“System.OutOfMemoryException”的异常。》这个提示,我猜测是不是内存的问题,所以我将实例中存有大量字符串的"sql1”,"sql2”,"cmd.CommandText” 这些在每次导入结束后都有一个"= Nothing" 的操作,但是还是不行。请问到底是哪里出的问题?
--  作者:有点甜
--  发布时间:2014/11/30 17:24:00
--  

 重新赋值

 

Dim sql1,sql2 As String

sql1 = ""

sql2 = ""


--  作者:paniwangji
--  发布时间:2014/11/30 17:29:00
--  
重新赋值也不行啊
--  作者:有点甜
--  发布时间:2014/11/30 17:33:00
--  

 那就不可能是固定第几次就提示错误。

 

 肯定是你导入的数据过多导致生产的字符串过长数据库无法执行。


--  作者:paniwangji
--  发布时间:2014/11/30 17:42:00
--  
这个原因可以肯定排除的,因为出现错误后,我重启FOXTABLE,导入刚刚出错的那批数据就很顺利。
[此贴子已经被作者于2014-11-30 17:41:49编辑过]

--  作者:有点甜
--  发布时间:2014/11/30 17:44:00
--  

 那就不可能,例子上传上来。

 

Dim sql1,sql2 As String

sql1 = ""

sql2 = ""


--  作者:有点甜
--  发布时间:2014/11/30 17:47:00
--  
 这个 cmd.CommandText 也要设置成空值