0
我需要將數據從checkedlistbox插入到Access數據庫。 checkedlistboxes中的項目是外鍵,並且通過它們的名稱而不是它們的ID來顯示。我需要做的是當我點擊「添加」按鈕時,它應該將項目的ID和它們的名稱作爲字符串(str)插入到數據庫中的Services_Availed表中,但即使插入了新數據,名稱也不會顯示(每當我點擊添加按鈕時添加另一個ServicesAvailed_ID)。如何將數據從CheckedListBox插入數據庫
這裏是我的嘗試:
Private Sub btnAddService_Click(sender As Object, e As EventArgs) Handles btnAddService.Click
Try
Dim con As New OleDb.OleDbConnection
Dim str As String = ""
Dim i As Integer
If chcklstbx1.CheckedItems.Count > 0 Then
For i = 0 To i < chcklstbx1.CheckedItems.Count
If str = "" Then
str = chcklstbx1.CheckedItems(i).ToString
Else
str += "," + chcklstbx1.CheckedItems(i).ToString
End If
Next
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\rose&mike\Desktop\DbSysDel3\salondbaccess.accdb"
con.Open()
Dim cmd As New OleDb.OleDbCommand
cmd = New OleDbCommand("Insert Into Services_Availed(AvailedNames) Values(@ServiceType_Name)", con)
cmd.Parameters.AddWithValue("@ServiceType_Name", str)
cmd.ExecuteNonQuery()
MessageBox.Show("Data inserted successfully")
con.Close()
Else
MessageBox.Show("Please select at least one item")
While (chcklstbx1.CheckedItems.Count > 0)
chcklstbx1.SetItemChecked(chcklstbx1.CheckedIndices(0), False)
End While
End If
Catch ex As Exception
End Try
End Sub
任何建議將高度讚賞。
是您有意添加新行對於每個被選中,還是僅僅指剛添加一行對所有項目?您的代碼只會添加一行。有關如何引用名稱和ID的信息,請參閱:https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems(v=vs.110).aspx –
@WayneG .Dunn是我想添加一行,但是對於每個被檢查的項目,它應該轉換爲'String',用逗號分隔,並保存到* AvailedNames *表中。代碼確實可行,但似乎存在與我用作參考的值有關的問題。 checkedlistbox中的項目來自名爲* Service_Types *的表。請指出我錯在哪裏。 – luca
在你爲'點擊'事件編碼時,你檢查是否有任何項目被選中(你的第一個'IF'語句),然後你循環所有的選中,但你的代碼插入一個新的記錄是外面的循環,因此它只會被執行一次。你應該在你的'IF'之後移動你的'con.conn ..','con.open',然後將'Next'移動到'con.close'之前。你看過關於如何引用項目的文章嗎? –