2016-06-10 97 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

这是可能的,但在批量复制操作开始之前。 –