2011-11-12 81 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中聲明同一個類。

相關問題