2011-11-12 56 views
1

我有一个有很多记录的DataTable。如何在C#/ ADO.NET中将多行插入到数据库中?

我试图通过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(); 
         } 

        } 

任何想法?请不要建议存储过程 - 我想通过这种方法或类似的方法来做到这一点。

+1

我没有看到你将参数传递给此代码中的命令对象。 – svanryckeghem

回答

1

退房SqlBulkCopy的,它可以让你在你的数据表直接传递到数据库。 Link

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); 
    } 
} 
0

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

相关问题