I figured this out.
Again, I have a checklistbox being populated by a table in SQL. I am using this form to insert a new user (tied to NewUserXID within a textbox (also being populated by SQL, auto generated) and the terminal(s) he or she has access to (TermXID).
Dim QueryUserTerm As String
QueryUserTerm = "INSERT INTO tblUserTerminals (UserXID, TerminalXID) VALUES ((@NewUserXID), (@TermXID))"
For i As Integer = 0 To TerminalListBox.CheckedItems.Count - 1
Dim XDRV As DataRowView = CType(TerminalListBox.CheckedItems(i), DataRowView)
Dim XDR As DataRow = XDRV.Row
Dim XValueMember As String = XDR(TerminalListBox.ValueMember).ToString()
Dim commandsql = New SqlCommand(QueryUserTerm, con)
commandsql.Parameters.AddWithValue("@TermXID", XValueMember)
commandsql.Parameters.AddWithValue("@NewUserXID", NewUserXID.Text.ToString)
commandsql.ExecuteNonQuery()
commandsql.Parameters.Clear()
Next
From PIEBALDconsult:
Don't keep creating and removing the parameters; the primary purpose of parameters is to use them many times.
Dim QueryUserTerm As String
QueryUserTerm = "INSERT INTO tblUserTerminals (UserXID, TerminalXID) VALUES ((@NewUserXID), (@TermXID))"
Dim commandsql = New SqlCommand(QueryUserTerm, con)
commandsql.Parameters.AddWithValue("@TermXID", "")
commandsql.Parameters.AddWithValue("@NewUserXID", "")
For i As Integer = 0 To TerminalListBox.CheckedItems.Count - 1
Dim XDRV As DataRowView = CType(TerminalListBox.CheckedItems(i), DataRowView)
Dim XDR As DataRow = XDRV.Row
Dim XValueMember As String = XDR(TerminalListBox.ValueMember).ToString()
commandsql.Parameters("@TermXID").Value= XValueMember
commandsql.Parameters("@NewUserXID").Value= NewUserXID.Text.ToString
commandsql.ExecuteNonQuery()
Next