如何在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();
}
}
任何想法?请不要建议使用存储过程—我希望通过这种方法或类似的方法来实现。
您需要在命令中添加您的参数。
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中声明相同的类。