将自定义数据添加到批量复制

时间:2016-06-10 05:45:04

标签: c# asp.net sqlbulkcopy

我有一个批量复制代码:

 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循环,但是数据被保存到数据库中的空行而没有名称和只有秘密的东西

结果(在数据库中):

    (secret)        (name)  (type) (email) (2ndemail)(address)
    secreetans      NULL    Null    NULL    NULL      NULL  
    NULL    qwwer   n   1@mail.com  2@mail.com         hi   
    ^^^
 i nid this null to be secretans 

1 个答案:

答案 0 :(得分:0)

我怀疑这是可能的。

根据MSDN

  

正在进行批量复制操作时,关联   目标SqlConnection正在忙于服务它,没有其他操作   可以在连接上执行