将选中的列表框插入数据库

时间:2017-05-22 12:07:09

标签: mysql sql vb.net checkedlistbox

我使用Visual Studio在Visual Basic项目中有6个复选框,每个框的值超过10个。 我想将复选框的值插入到一个表中,将复选框的所有值都插入到一个单元格中(如果可能)。

例如,我有一个名为Food的表,其中包含用户ID,水果,蔬菜和零食。 假设我有3个复选框,我想在Fruit列中检查所有水果,因为它代表一个人。

我开始使用这样的代码:

sql = "INSERT INTO Food (id, Fruits, Vegetables, Snacks) VALUES ('" & txtIDR.Text & "','" & CheckedFruits.CheckedItems.ToString & "','" & CheckedVegetables.CheckedItems.ToString & "','" & CheckedSnacks.CheckedItems.ToString & "','" & ")"

我没有收到错误消息,但我担心我处理选中列表框的方式出错了。

请告知。

1 个答案:

答案 0 :(得分:0)

编辑:抱歉没有看到CheckListBox

访问您应该使用的CheckListBox的属性:

CheckedListBox1.CheckedItems.Item(0)

其中0是您的商品索引

但是你需要记住CheckedItems.Item只有在你试图调用CheckedListBox1.CheckedItems.Item(0)但是没有被检查的情况下检查某些东西时才会存在你会得到索引超出界限

使用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

CheckedListBox MSDN