为什么每当我运行这段代码时它在数据库中工作就好了但是当我查看ListBox时,我放入的所有项目都消失了?当我放置3个项目时,然后执行下面的代码,当我检查数据库时它更新得很好但列表框本身变空。并且它显示了索引不可接受的错误。
这是我的代码:
For i As Integer = 0 To ListBox1.Items.Count - 1
Dim l_text As String = CStr(ListBox1.Items(i))
MysqlConn.ConnectionString = ServerString
Dim dbDataSet As New DataTable
Dim SDA As New MySqlDataAdapter
Dim bSource As New BindingSource
Dim READER As MySqlDataReader
Dim query As String
MysqlConn.Open()
query = "select * from test.subject where subject_name= '" + l_text + "'"
COMMAND = New MySqlCommand(query, MysqlConn)
READER = COMMAND.ExecuteReader
While READER.Read
slot = READER.GetInt32("subject_slot")
slot = slot - 1
Label1.Text = ""
Label5.Text = ""
End While
MysqlConn.Close()
MysqlConn.Open()
query = "UPDATE test.subject SET subject_slot='" & slot & "' WHERE subject_name= '" + l_text + "'"
COMMAND = New MySqlCommand(query, MysqlConn)
READER = COMMAND.ExecuteReader
ListBox1.Items.Clear()
MysqlConn.Close()
Next
MsgBox("ENROLLMENT SUCCESSFUL")
MsgBox("ALL SUBJECTS SELECTED ARE ENROLLED")
load_table()
答案 0 :(得分:1)
你真的想过你实际上想要实现的目标吗?看看这两行代码。这是你的循环:
For i As Integer = 0 To ListBox1.Items.Count - 1
这是一个在该循环中的一行:
ListBox1.Items.Clear()
如果在该循环的第一次迭代中清除ListBox
,那么当然在第二次迭代中使用的索引(即1)将无效。任何索引都将无效,因为您已清除任何项目。
你需要停下来思考那个循环实际上应该做什么。拿起一支笔和纸,如果你需要的话就把它写下来,但是你所拥有的代码没有任何意义,因为要么你没有费心去阅读/调试代码以确认它符合你的期望或你的期望本身是荒谬的。