2016-06-10 14 views
0

Ich habe einen Bulk-Copy-Code:Hinzufügen von benutzerdefinierten Daten 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(); 
       } 
      } 
     } 
    } 

Ist es möglich, in meinem eigenen Daten in jeder Zeile hinzufügen, während diese Methode aufgerufen wird? Beispiel:

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

Wie füge ich diese Art von Insert Code in? Und die Daten aus diesem Einfügecode werden zu jeder Zeile hinzugefügt, die in der Datenbank gespeichert wird.

Versuchte:

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

Ich habe versucht, die foreach-Schleife, aber die Daten gespeichert wird mit den secretans

Ergebnisse (in der Datenbank) nur Zeilen in der Datenbank, ohne den Namen und die Sachen auf null:

(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

Sie müssen "geheime" Daten verbinden, bevor Sie sqlbulkcopy ausführen. –

+0

@MaciejLos können Sie ein Beispiel mit dem Code über – JustASimpleGuy

+0

tun Bitte teilen Sie Ihre aktuellen und gewünschten Ergebnis. Es ist nicht klar aus der Frage – Sam

Antwort

0

Ich bezweifle, dass das möglich ist.

Nach MSDN

Während der Massenkopiervorgang im Gang ist, das zugehörige Ziel SqlConnection besetzt dient es und keine andere Operationen können auf die Verbindung durchgeführt werden.

+2

Es ist möglich, aber bevor der Bulkcopy-Vorgang beginnt. –