[英]Adding contents of a DataViewGrid to access - VB
我遇到了令人沮喪的問題! 我下面的VB代碼旨在將DataGridView中的記錄傳輸到Access數據庫。 例如,假設gridview有三個記錄
Name|House|Age
John|L|1
Rick|B|12
Fred|A|20
“名稱|年齡”是GridView的標題,而三個記錄組成了正文。 按照下面的邏輯,我在Access數據庫中獲得John的記錄三遍(即,不是讓John,Rick和Fred而是三位完全相同的John,L)。
我敢肯定,這是我忽略了的一個小邏輯錯誤-因此,全新的視角和雙眼將是不錯的選擇。 我僅列出了我認為是問題根源的內容,但是很高興在問題可能不屬於此范圍的情況下提供更多來源。
我感謝您的幫助!
Dim con As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =Jack.mdb")
Dim cmd As New OleDb.OleDbCommand("INSERT INTO students(StuName,House,Age) VALUES (@StuName,@House,@Age)", con)
Dim studentName As String
Dim studentHouse As String
Dim studentAge As String
con.Open()
For x As Integer = 1 To DataGridView1.Rows.Count - 1
studentName = DataGridView1.Rows(x).Cells(0).Value
studentHouse = DataGridView1.Rows(x).Cells(1).Value
studentAge = DataGridView1.Rows(x).Cells(2).Value
Try
cmd.Parameters.AddWithValue("@StuName", SqlDbType.Text).Value = studentName
cmd.Parameters.AddWithValue("@House", SqlDbType.Text).Value = studentHouse
cmd.Parameters.AddWithValue("@Age", SqlDbType.Text).Value = studentAge
Catch ex As Exception
End Try
cmd.ExecuteNonQuery()
Next x
con.Close()
您不斷重復添加參數。 嘗試在循環開始時清除它們:
For x As Integer = 1 To DataGridView1.Rows.Count - 1
cmd.Parameters.Clear()
並避免使用空的Try-Catch。 當您這樣做時,您將忽略代碼中的問題。 一方面,“年齡”字段可能不應該是文本字段。
由於您使用的是OleDb庫,因此您的參數可能應該使用OleDbType而不是SqlDbType。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.