OLEDB和c#批量插入创建Excel电子表格

本文关键字:创建 Excel 电子表格 插入 OLEDB | 更新日期: 2023-09-27 18:07:14

我使用c#读取SQL存储过程,将存储过程的结果放入c#数据表中,然后逐行读取数据表以构建我的"Insert into.... "这创建了我的Excel电子表格与正确的数据。然而,不是逐行插入,有一种方法来做批量插入吗?

如果我正在考虑让存储过程将结果写入永久表,因此有一种方法可以执行"插入到...."选择。当我在c#中尝试过这个代码无法找到指定的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],其中parameters[i]对该行中的每一列递增。然后循环查找每一行数据并设置cmd.Parameters[I]。适当的值。因为我必须设置cmd.Parameters[I]。值在我的数据集中找到的每一行,然后cmd.ExecuteNonQuery();这是相当耗时的。那么,是否有一种方法可以将数据表中的数据批量插入到OLEDB命令中,如果没有,我可以通过直接引用SQL表并执行"insert into..select from"来插入数据吗?

OLEDB和c#批量插入创建Excel电子表格

您可以用分号分隔insert语句并只运行一个命令。例如…

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();

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