如何将所有选定项目的checkboxlist存储到数据库单列中

时间:2013-05-06 21:44:08

标签: vb.net

我的目标是将checkbooxlist中的所有已检查项目输入到我的数据库中的单个列中。 我知道这不是一个好的设计。但是,这是要求。

以下是我用来从checkboxlist中获取所有选定项目的代码:

 Dim listitems As String
 listitems = ControlChars.CrLf
            For i = 0 To (chkActivities.Items.Count - 1)
                If chkActivities.GetItemChecked(i) = True Then
                    listitems = listitems & (i + 1).ToString & chkActivities.Items(i).ToString & ControlChars.CrLf
                End If
            Next

这是为填充我的表而执行的连接字符串和命令:

>

            objCon.Open()
            objCmd = New SqlCommand("insert into activity_by_customer (userID, city, personal_activities, BookingDate, price) values ( '" & frmLogin.userID & "','" & cbbCity.Text & "','" & listitems & "','" & Date.Today & "','" & lblpriceValue.Text & "' )", objCon)
            objCmd.ExecuteNonQuery()
            activitiesbycustomer.Update(Me.ResourcesDataSet.activity_by_customer)
            MsgBox("Your booking has been successful")
            objCon.Close()

然而,当我执行此代码时,它会因错误而崩溃。错误如下:

  

'附近的语法不正确。   字符串后的未闭合引号' )'

由于' listitems'出现此错误。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如何构建列表项,而不是如何将值传递给数据库。

不要使用字符串连接来构建sql命令

objCon.Open()
objCmd = New SqlCommand("insert into activity_by_customer " & _ 
    "(userID, city, personal_activities, BookingDate, price) " & _ 
    "values (@usrID, @city, @itms, @dt, @price)", objCon)
objCmd.Parameters.AddWithValue("@usrID",frmLogin.userID)
objCmd.Parameters.AddWithValue("@city",cbbCity.Text)
objCmd.Parameters.AddWithValue("@itms", listitems)
objCmd.Parameters.AddWithValue("@dt",Date.Today)
objCmd.Parameters.AddWithValue("@price", lblpriceValue.Text)
objCmd.ExecuteNonQuery()
....

通过这种方式,框架代码会根据单个引号等字符的存在来格式化您的值,并避免随之而来的语法错误。此外,通过这种方式,您可以避免Sql Injection attacks