用于Excel电子表格创build的OLEDB和C#批量插入

我正在使用C#读取SQL存储过程,将存储过程的结果放入C#数据表中,然后逐行读取数据表以build立我的“插入…值”等。 这将创build具有正确数据的Excel电子表格。 但是,而不是逐行插入,是否有一种做批量插入的方法?

如果我没有想到让存储过程把结果写到一个永久表中,因此有办法做一个“Insert into …. select from”。 当我在C#中试过这个代码无法find指定的“Microsoft数据库访问引擎无法find对象”的SQL表名时,什么是正确的语法,以及在哪里指定了何处/如何访问SQL表?

谢谢


嗨,该链接看起来像使用Microsoft.Office.Interop.Excel; 我正在使用OLEDB(我现在开始后悔!)。 所以基本上我有一个从另一个组件调用的C#类。 这个C#类读取一个sql存储过程,把结果放到一个数据表中。 然后使用OLEDB命令“Insert into([])values(”?“)设置表定义,然后定义参数,例如cmd.Parameters.Add(columnHeading,OleDbType.VarChar,size)等等。我发现在数据表中我设置了cmd.Parameters [i] .value = row [i],其中参数[i]增加了该列中的每一列,然后循环为每个数据列设置cmd.Parameters因为我必须为我的数据集中find的每一行设置cmd.Parameters [i] .Value,然后设置cmd.ExecuteNonQuery();这是非常耗时的。批量插入数据表中的数据到OLEDB命令,如果没有,我可以插入数据通过直接引用一个SQL表,并做一个“插入到..select”?

我的问题是:真的需要吗? Excel本身为您提供了一种以非常简单的方式访问外部数据(SQL Server)的工具。 如果你不修改拉数据 – 为什么你需要一个中间人?

你可以用一个分号分隔你的插入语句,只运行一个命令。 例如 …

string sql = "insert into table (col1,col2) values ('row1','row1');" sql += "insert into table (col1,col2) values ('row2','row2');" sql += "insert into table (col1,col2) values ('row3','row3');" SqlConnection conn = new SqlConnection("some connection string"); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); conn.ExecuteNonQuery(); conn.Dispose(); cmd.Dispose(); 

或类似的东西。 您正在使用1个命令执行所有3个查询。 这可能不适用于SQL Server以外的数据库,但肯定会与SQL Server一起使用。