2017-05-06 28 views
0

時,具有相同密鑰的項目已被添加錯誤我在FormMain_load子內部有這些代碼行。即使當我清除

在第一次加載時,程序正常工作。然後我嘗試打開另一個表單並再次調用FormMain。這一次,表單顯示錯誤,具有相同鍵的項目已被添加。我試圖在子的第一行上清楚字典,但它仍然顯示相同的錯誤。然後,我還嘗試清除字典,然後重新添加,但仍然失敗。奇怪的是消息框顯示錯誤發生之前字典計數爲0。

query = "SELECT * FROM transaction WHERE isPaid=0" 
    If myConn.State = ConnectionState.Closed Then 
     myConn.Open() 
    End If 
    If myCommand Is Nothing Then 
     myCommand = New MySqlCommand(query, myConn) 
    Else 
     myCommand.CommandText = query 
    End If 
    myDataReader = myCommand.ExecuteReader 
    If myDataReader.HasRows Then 
     While myDataReader.Read() 
      transactionUnpaid.Enqueue(myDataReader("transaction_id")) 
     End While 
     myDataReader.Close() 
     roomList.Clear() 
     MsgBox(roomList.Count()) 
     For Each a As Integer In transactionUnpaid 
      query = "SELECT * FROM room_ol WHERE transaction_id=" & a 
      If myConn.State = ConnectionState.Closed Then 
       myConn.Open() 
      End If 
      If myCommand Is Nothing Then 
       myCommand = New MySqlCommand(query, myConn) 
      Else 
       myCommand.CommandText = query 
      End If 
      myDataReader = myCommand.ExecuteReader 
      myDataReader.Read() 
      roomList.Add(myDataReader("room_id"), myDataReader("transaction_id")) 
      myDataReader.Close() 
     Next 
    End If 
    If Not myDataReader.IsClosed Then 
     myDataReader.Close() 
    End If 

回答

0

謝謝FabioJensBugs那裏。所以問題是我沒有清除transactionUnpaid Queue,並且當我再次調用FormMain時,它排隊了一些重複的項目(這在隊列中是允許的),並且它使得一些鍵被插入多次,因此出錯。

相關問題