簡體   English   中英

上傳 Datagridview 數據到 MySQL DB

[英]Uploading Datagridview data to MySQL DB

我創建了一個從 CSV 到 datagridview 的簡單大量數據上傳,並將所有 datagridview 行保存到我的 MySQL 表中,代碼運行良好,但是當我檢查我的數據庫時,它將 null 值插入到我的代碼表中。

這是我的按鈕,用於從我的 Datagridview 添加所有值

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cmd As MySqlCommand

        connection.Open()
        Dim i As Integer
        For i = 0 To DataGridView1.Rows.Count - 2

            Dim row As DataGridViewRow = DataGridView1.Rows(i)

            cmd = New MySqlCommand("INSERT INTO tbl_handling(tbl_docnumber,tbl_bpref,tbl_cname) values (@docnumber,@bref,@cname)", connection)

            cmd.Parameters.Add("@docnumber", MySqlDbType.Int64).Value = DataGridView1.Rows(i).Cells(0).Value.ToString
            cmd.Parameters.Add("@bref", MySqlDbType.VarChar).Value = DataGridView1.Rows(i).Cells(1).Value.ToString
            cmd.Parameters.Add("@cname", MySqlDbType.VarChar).Value = DataGridView1.Rows(i).Cells(2).Value.ToString

            cmd.ExecuteNonQuery()
        Next

        connection.Close()
        connection.Dispose()
       
        MessageBox.Show("Data All Uploaded")

    End Sub

這是我將 CSV 文件插入我的 Datagrid 視圖的代碼

Private Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectData.Click

        Dim fName As String = ""
        OpenFileDialog1.InitialDirectory = "D:\TestFile"
        OpenFileDialog1.Filter = "CSV files(*.csv)|*.csv"
        OpenFileDialog1.RestoreDirectory = True

        Dim colespected As Integer = 5

        Dim sline As String = ""



        If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            fName = OpenFileDialog1.FileName
            Dim thereader As New StreamReader(fName, Encoding.Default)
            Do
                sline = thereader.ReadLine
                If sline Is Nothing Then Exit Do

                Dim words() As String = sline.Split(",")
                DataGridView1.Rows.Add("")

                For ix As Integer = 0 To 2
                    DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(ix).Value = words(ix)
                Next

            Loop
            thereader.Close()
        End If

    End Sub

我假設您的數據在網格中成功顯示。 所以我只處理 Button 事件。

命令和連接都需要關閉和處理。 Using...End Using塊為您執行此操作。 (順便說一句, Stream對象也應該在Using塊中。)數據庫對象應該是使用它們的方法的本地對象。 如果您.Dispose一個連接,您希望以后如何.Open它? 命令和參數集合僅在循環外創建一次。 只是.Value在循環內發生變化。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using connection As New MySqlConnection(ConStr),
            cmd As New MySqlCommand("INSERT INTO tbl_handling(tbl_docnumber,tbl_bpref,tbl_cname) values (@docnumber,@bref,@cname)", connection)
        cmd.Parameters.Add("@docnumber", MySqlDbType.Int64)
        cmd.Parameters.Add("@bref", MySqlDbType.VarChar)
        cmd.Parameters.Add("@cname", MySqlDbType.VarChar)
        connection.Open()
        For i = 0 To DataGridView1.Rows.Count - 2
            cmd.Parameters("@docnumber").Value = CLng(DataGridView1.Rows(i).Cells(0).Value)
            cmd.Parameters("@bref").Value = DataGridView1.Rows(i).Cells(1).Value.ToString
            cmd.Parameters("@cname").Value = DataGridView1.Rows(i).Cells(2).Value.ToString
            cmd.ExecuteNonQuery()
        Next
    End Using
    MessageBox.Show("Data All Uploaded")
End Sub

我有點擔心tbl_docnumber是數據庫中的自動編號(身份)主鍵。 如果是這樣,則應從Insert中省略此字段。

如果您填充DataTable而不是DataGridView ,此操作會更容易。 然后,您可以使用DataAdapter更新數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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