2016-03-29 16 views
0

Ich verwende den folgenden Code, um zu versuchen, ein Listenfeld durchzulaufen und jedes Element in separaten Zeilen in einer Access-Datenbank einzufügen. Der Code funktioniert nur für das erste Listenfeldelement, fügt es jedoch wie erwartet ein.Durchschleifen und alle ListBox-Elemente zu einer Access-Datenbank hinzufügen (in separate Zeilen)

ich einige, wie muß Schleife so durch, dass alle Elemente und nicht nur die ersten

 foreach (var listBoxItem in ServicePartsList.Items) 
     { 

      item = listBoxItem.ToString(); 
      string[] result = item.Split(','); 
      MessageBox.Show(result[0] + result[1]); 
      using (OleDbConnection conn = new OleDbConnection()) 
      { 
       conn.ConnectionString = connection.dbdataSource; 
       // insert into database 
       using (OleDbCommand addPart = new OleDbCommand()) 
       { 
        //Open Connection 
        conn.Open(); 
        addPart.Connection = conn; 

        addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)"; 
        addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick); 
        addPart.Parameters.AddWithValue("partNo", result[0]); 
        addPart.Parameters.AddWithValue("quantity", result[1]); 

        //execute SQL 
        int recordsAdded = addPart.ExecuteNonQuery(); 

        //Close DB Connection 
        conn.Close(); 

       } 

Antwort

1

vielleicht nicht die exakte Lösung, sondern die Öffnungs Verbindung in einer Schleife eingefügt werden, öffnen Sie es einmal und Verwenden Sie dann eine Verbindung zum Einfügen mehrerer Zeilen:

using (OleDbConnection conn = new OleDbConnection()) 
{ 
    conn.ConnectionString = connection.dbdataSource; 
    conn.Open(); 

    foreach (var listBoxItem in ServicePartsList.Items) 
    { 
     item = listBoxItem.ToString(); 
     string[] result = item.Split(','); 
     MessageBox.Show(result[0] + result[1]); 
     // insert into database 
     using (OleDbCommand addPart = new OleDbCommand()) 
     { 
      //Open Connection 

      addPart.Connection = conn; 

      addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)"; 
      addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick); 
      addPart.Parameters.AddWithValue("partNo", result[0]); 
      addPart.Parameters.AddWithValue("quantity", result[1]); 

      //execute SQL 
      int recordsAdded = addPart.ExecuteNonQuery(); 

     } 
    } 
    //Close DB Connection 
    conn.Close(); 
}