Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
C# 用于Excel电子表格创建的OLEDB和C批量插入_C#_Excel_Oledb - Fatal编程技术网

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

C# 用于Excel电子表格创建的OLEDB和C批量插入,c#,excel,oledb,C#,Excel,Oledb,我正在使用C读取SQL存储过程,将存储过程的结果放入C数据表中,然后逐行读取数据表以建立插入到…值等。这将创建包含正确数据的Excel电子表格。但是,有没有办法进行批量插入而不是逐行插入 如果失败了,我想让存储过程将结果写入一个永久表,因此有一种方法可以插入到…select from。当我在C中尝试此操作时,代码找不到指定的SQL表名Microsoft database access engine找不到对象,正确的语法是什么,您在哪里指定访问SQL表的位置/方式 谢谢 您好,该链接似乎正在使用M

我正在使用C读取SQL存储过程,将存储过程的结果放入C数据表中,然后逐行读取数据表以建立插入到…值等。这将创建包含正确数据的Excel电子表格。但是,有没有办法进行批量插入而不是逐行插入

如果失败了,我想让存储过程将结果写入一个永久表,因此有一种方法可以插入到…select from。当我在C中尝试此操作时,代码找不到指定的SQL表名Microsoft database access engine找不到对象,正确的语法是什么,您在哪里指定访问SQL表的位置/方式

谢谢

您好,该链接似乎正在使用Microsoft.Office.Interop.Excel; 我正在使用OLEDB,我现在开始后悔了!。所以基本上我有一个C类,它是从另一个组件调用的。这个C类读取sql存储过程,将结果放入数据表中。然后,我使用OLEDBcommand Insert into[]values?设置表定义?。然后定义参数,例如cmd.parameters.AddcolumnHeading、OleDbType.VarChar、size等。然后,对于在数据表中找到的每一行,我设置cmd.parameters[I].value=row[I],其中该行中的每一列的参数[I]都会递增。然后,我对每个数据行进行循环,并适当地设置cmd.Parameters[I].value。因为我必须为我在数据集中找到的每一行设置cmd.Parameters[I].值,然后设置cmd.ExecuteNonQuery;
,这相当耗时。那么有没有办法将数据表中的数据批量插入OLEDB命令?如果没有,我可以直接引用SQL表并插入到..select from中插入数据吗?

您可以用分号分隔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。

能否显示select和insert语句?您选择的是Access还是SQL Server?您是通过连接字符串将excel作为数据源直接从C插入excel还是什么?这是C windows应用程序吗?我将从SQL Server中进行选择。是的,我使用OleDbConnection conn=new OleDbConnectionProvider=Microsoft.ACE.OLEDB.12.0直接从C插入excel;数据源=+保存文件名和位置+;EXCEL2.0XML扩展属性;HDR=Yes'这是一篇将数据从数据库导出到excel工作表的文章。但是我不确定您是否已经尝试过。对不起,我使用的是OLEDBcommand,而不是SQLConnection。我理解在一个命令中执行3个查询的要点,但要做到这一点,我仍然需要循环数据表以计算出第2行的值,然后循环并读取第3行的下一条记录。我希望避免在数据表中循环读取每一行,而是一次性将数据表中的所有行大容量插入OLEDBCommand。我开始觉得这是不可能的。