2013-05-06 49 views
0

我的目標是將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() 

但是,當我執行此代碼時,它崩潰了一個錯誤。錯誤如下:

's'附近的語法不正確。 字符串')'後面未加上引號。

由於'listitems'出現此錯誤。 任何幫助,將不勝感激。

回答

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

+0

感謝您的回覆,您提供的答案是正確的,並且正在開展工作。請問您是否可以提供任何與本解決方案相關的鏈接,僅用於學術目的。 – 2013-05-06 21:55:53

相關問題