Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OLEDB在将多条记录从C#插入Excel电子表格时性能低下_C#_Performance_Excel_Oledb - Fatal编程技术网

OLEDB在将多条记录从C#插入Excel电子表格时性能低下

OLEDB在将多条记录从C#插入Excel电子表格时性能低下,c#,performance,excel,oledb,C#,Performance,Excel,Oledb,我正在使用OLEDB连接(Microsoft.ACE.OLEDB.12)从C#数据表中读取记录,并将记录放入excel电子表格中 我正在循环数据表中的每条记录,并使用“插入表名值”(Insert into table name values)等创建OLEDBCommand.CommandText。我必须正确设置值的格式,以便正确插入字符串/字符/整数/小数。这一切都可以正常工作,并且当有大量记录要插入时,会创建电子表格(例如,500000多条),那么性能真的很慢,而且永远都需要。有没有更快的方法

我正在使用OLEDB连接(Microsoft.ACE.OLEDB.12)从C#数据表中读取记录,并将记录放入excel电子表格中

我正在循环数据表中的每条记录,并使用“插入表名值”(Insert into table name values)等创建OLEDBCommand.CommandText。我必须正确设置值的格式,以便正确插入字符串/字符/整数/小数。这一切都可以正常工作,并且当有大量记录要插入时,会创建电子表格(例如,500000多条),那么性能真的很慢,而且永远都需要。有没有更快的方法来做到这一点,而不是一次从我的C#datatable中读取一条记录,确保SQL语句具有正确的数据类型语法,然后一次插入一条

谢谢你的帮助


谢谢

请确保您使用准备好的语句进行插入

谢谢您的建议,我现在已切换到使用准备好的语句和银行的建议,我现在已切换到根据链接使用准备好的语句,并缩短了执行时间。426302条记录现在需要4分23秒,而不是10分10秒要显示在Excel电子表格上。但是,读取数据表似乎仍需要很长时间,请设置cmd.Parameters[0].value,然后是cmd.ExecuteNonQuery。要将1082171条记录写入excel电子表格需要27分钟,我是否可以尝试其他性能增强功能?为了查看是否有其他改进,您应该在网站上发布代码(编辑原始问题)。您可以尝试的是查看是否有任何语句可以移动到数据表上的循环之外,例如,在循环之前,OldeDbCommand对象只应创建和准备一次。此外,由于准备好的语句对您有所帮助,如果您接受我的回答,那么我们都可以获得一些信誉点,那将非常好。是的,对不起,这是我的问题第一次在论坛上,所以还不太熟悉礼仪。谢谢。我只想指出,使用OLEDB命令向excel文件插入数据会随着行数的增加而变得更慢。