在使用 Visual Studio 的 Visual Basic 项目中,我有 6 个复选框,每个复选框都有超过 10 个值。 我想将复选框的值插入到一张表中,将复选框的所有值插入到一个单元格中(如果可能)。
例如,我有一个名为 Food 的表,其中包含用户 ID、Fruits、Vegetables 和 Snacks。 假设我也有 3 个复选框,我希望在 Fruit 列中选中所有 Fruits,因为它代表一个人。
我的代码是这样开始的:
sql = "INSERT INTO Food (id, Fruits, Vegetables, Snacks) VALUES ('" & txtIDR.Text & "','" & CheckedFruits.CheckedItems.ToString & "','" & CheckedVegetables.CheckedItems.ToString & "','" & CheckedSnacks.CheckedItems.ToString & "','" & ")"
我没有收到错误消息,但我担心我处理选中列表框的方式出了问题。
请指教。
最佳答案
编辑:抱歉没有看到它是 CheckListBox
要访问 CheckListBox 的属性,您应该使用:
CheckedListBox1.CheckedItems.Item(0)
其中 0 是您的项目索引
但是,您需要记住,如果您尝试调用 CheckedListBox1.CheckedItems.Item(0)
但没有检查任何内容,则仅当检查了某些内容时 CheckedItems.Item
才会存在你会发现 Index 超出范围
轻松获取所有检查值的一种简单方法是使用 For Each
:
For Each check In CheckedListBox1.CheckedItems
Debug.WriteLine(check)
Next
你可以有这样的东西:
Public Function CreateSQL() As SqlCommand
Dim Fruits As String = ""
Dim Vegetables As String = ""
Dim Snacks As String = ""
For Each check In CheckedFruits.CheckedItems
Fruits = Fruits & check & ","
Next
If Fruits.LastIndexOf(",") = Fruits.Length - 1 Then
Fruits = Fruits.Remove(Fruits.LastIndexOf(","), 1)
End If
For Each check In CheckedVegetables.CheckedItems
Vegetables = Vegetables & check & ","
Next
If Vegetables.LastIndexOf(",") = Vegetables.Length - 1 Then
Vegetables = Vegetables.Remove(Vegetables.LastIndexOf(","), 1)
End If
For Each check In CheckedSnacks.CheckedItems
Snacks = Snacks & check & ","
Next
If Snacks.LastIndexOf(",") = Snacks.Length - 1 Then
Snacks = Snacks.Remove(Snacks.LastIndexOf(","), 1)
End If
MyCommand = New SqlCommand("INSERT INTO Food (id, Fruits, Vegetables, Snacks) VALUES (@UserID, @Fruits, @Vegetables, @Snacks)", dbConn)
MyCommand.Parameters.AddWithValue("@UserID", TicBoxText.Text)
MyCommand.Parameters.AddWithValue("@Fruits", Fruits)
MyCommand.Parameters.AddWithValue("@Vegetables", Vegetables)
MyCommand.Parameters.AddWithValue("@Snacks", Snacks)
Return MyCommand
End Sub
关于mysql - 将选中的列表框插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44112475/