2016-03-29 19 views
0

Liste kutusunun içinde dolaşmayı denemek ve her bir öğeyi bir erişim veritabanındaki ayrı satırlara eklemek için aşağıdaki kodu kullanıyorum. Kod yalnızca ilk liste kutusu öğesi için çalışıyor ancak beklendiği gibi ekliyor. Tüm ListBox Döngü Öğelerini Ekleyin ve bir Access Veritabanına (ayrı satırlara)

Bazı nasıl nedenle tüm öğeler eklenir olduğunu ve sadece ilki

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

       } 

cevap

1

, ancak bunun yerine bir döngü içinde açılış bağlantısı, tam bir çözüm olması kez aç olmasa gerek ve döngü gerekir sonra birden çok satır eklemek için bir bağlantı kullanın:

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