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