如何在c# /ADO.NET中插入多行到数据库中

本文关键字:插入 数据库 NET ADO | 更新日期: 2023-09-27 18:14:27

我有一个DataTable,它有一些记录。

我已经尝试了下面的代码迭代通过数据表和插入到数据库中,但我收到一个错误消息,说参数尚未声明:

       using (SqlCommand command = new SqlCommand(("My insert statement"), connection))
                    {
                        SqlParameter param1 = new SqlParameter();
                        SqlParameter param2 = new SqlParameter();
                        param1.ParameterName = "@ProductID";
                        param2.ParameterName = "@ID";
                        foreach (DataRow row in table.Rows)
                        {
                            param1.Value = row[0].ToString();
                            param2.Value = row[1].ToString();
                            command.ExecuteNonQuery();
                        }
                    }

任何想法?请不要建议使用存储过程—我希望通过这种方法或类似的方法来实现。

如何在c# /ADO.NET中插入多行到数据库中

您需要在命令中添加您的参数。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

谨慎虽然

你有你的代码的方式,如果你把添加在foreach中,你的第一次执行将工作,然后下一次将失败,错误消息指出,你已经有一个名为@ProductID/@ID的变量。

每次需要清除参数。

检查SqlBulkCopy,它将允许您将数据表直接传递到数据库。链接

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
    bulkCopy.DestinationTableName = "dbo.TableYouWantToInsertTheRowsTo";
    try
    {
         // Write from the source to the destination.
         bulkCopy.WriteToServer(newProductsDataTable);
    }
    catch (Exception ex)
    {
         Console.WriteLine(ex.Message);
    }
}

如果使用的是SQL2008,则可以将对象/数据表的整个列表作为参数传递给存储过程。在这种情况下,您还需要在sql中声明相同的类。