2016-06-10 30 views
0

我有一個批量複製代碼:添加自定義數據bulkcopy

private void SqlbulkCopy(DataTable dt) 
    { 

     if (dt.Rows.Count > 0) 
     { 
      string consString = ConfigurationManager.ConnectionStrings["Bulkcopy"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(consString)) 
      { 
       using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con)) 
       { 

        sqlBulkCopy.DestinationTableName = "dbo.leads"; 

        sqlBulkCopy.ColumnMappings.Add(dt.Columns[0].ToString(), "Name"); 
       sqlBulkCopy.ColumnMappings.Add(dt.Columns[1].ToString(), "Type"); 
       sqlBulkCopy.ColumnMappings.Add(dt.Columns[2].ToString(), "Emaily"); 
       sqlBulkCopy.ColumnMappings.Add(dt.Columns[3].ToString(), "EmailSecondary"); 
       sqlBulkCopy.ColumnMappings.Add(dt.Columns[4].ToString(), "Address"); 

        con.Open(); 
        sqlBulkCopy.WriteToServer(dt); 
        con.Close(); 
       } 
      } 
     } 
    } 

是否有可能在各行中我自己的數據增加而調用此方法? 例如:

sqlcommand1.Parameters.Add("@secret", SqlDbType.NVarChar).Value = txtsecret.Text.Trim(); 

如何添加這種類型的插入代碼? 並且來自該插入代碼的數據將被添加到存儲在數據庫內的每一行中。

嘗試:

foreach (DataRow row in dt.Rows) 
{ 
    sqlcommand1.Parameters.Add("@secret", SqlDbType.NVarChar).Value = txtsecret.Text.Trim(); 

    sSql= "Insert into details(secret) "; 
    sSql+= " values(@secret)"; 

    sSqlCmd.CommandText = sSql; 
    Conn.DBParaQuery(sSql, sqlcommand1); 
} 

我試圖foreach循環,但得到的數據保存到NULL無名字之類的東西在數據庫中的行只與secretans

結果(數據庫):

(secret)  (name) (type) (email) (2ndemail)(address) 
    secreetans  NULL Null NULL NULL  NULL 
    NULL qwwer n [email protected] [email protected]   hi 
    ^^^ 
i nid this null to be secretans 
+0

在運行sqlbulkcopy之前,您必須加入「祕密」數據。 –

+0

@MaciejLos你可以用 – JustASimpleGuy

+0

以上的代碼做一個例子請分享你當前和期望的結果。從 – Sam

回答

0

我懷疑這是可能的。

根據MSDN

儘管批量複製操作正在進行中,相關聯的目的地 是的SqlConnection忙於服務它,沒有其它操作 可以在連接上執行。

+2

這是可能的,但在批量複製操作開始之前。 –