首页 文章

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

提问于
浏览
1

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

如果不这样,我正在考虑让存储过程将结果写入永久表,因此有一种方法可以执行“Insert into .... select from” . 当我在C#中尝试过这个时,代码无法找到指定的SQL表名“Microsoft数据库访问引擎无法找到对象”,正确的语法是什么,在哪里指定访问SQL表的位置/方式?

谢谢


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

2 回答

  • 0

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

  • 0

    您可以使用分号分隔insert语句并仅运行1个命令 . 例如 ...

    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 .

相关问题