簡體   English   中英

添加要訪問的DataViewGrid的內容-VB

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM