[英]VB.NET Insert DataGridView contents into Database
問題:
我需要將DataGridView的內容轉儲到SQL Server數據庫表中。 我的datagridview加載良好,沒有問題。 我只是對VB.NET不夠熟悉,無法理解如何將這些數據放入數據庫表中。
代碼:(到目前為止)
Dim connection As New Data.SqlClient.SqlConnection
Dim dataAdapter As New Data.SqlClient.SqlDataAdapter
Dim command As New Data.SqlClient.SqlCommand
Dim dataSet As New Data.DataSet
connection.ConnectionString = "Server= server; Database= DB; integrated security=true"
command.CommandText = "INSERT INTO <table> (Col1, Col2, Col3, Col4) VALUES (@Name, @Property, @Value, @Date)"
dataAdapter.InsertCommand.Parameters.Add("@ServerName", SqlDbType.VarChar)
dataAdapter.InsertCommand.Parameters.Add("@Property", SqlDbType.VarChar)
dataAdapter.InsertCommand.Parameters.Add("@Value", SqlDbType.VarChar)
dataAdapter.InsertCommand.Parameters.Add("@CaptureDate", SqlDbType.DateTime)
For i As Integer = 0 To DataGridView.Rows.Count - 1
dataAdapter.InsertCommand.Parameters(0).Value = dgvServerConfig.Rows(i).Cells(0).Value
dataAdapter.InsertCommand.Parameters(1).Value = dgvServerConfig.Rows(i).Cells(1).Value
dataAdapter.InsertCommand.Parameters(2).Value = dgvServerConfig.Rows(i).Cells(2).Value
dataAdapter.InsertCommand.Parameters(3).Value = dgvServerConfig.Rows(i).Cells(3).Value
Next
connection.Open()
command.Connection = connection
dataAdapter.SelectCommand = command
我在這里想念什么? 什么都沒有插入到我的表中。 任何幫助,將不勝感激。 就像我說的那樣,我對VB不太熟悉,所以請放輕松。
好吧,您需要執行命令,而不僅僅是添加到DataAdapter中
另外,按照現在的編碼,您根本不需要DataAdapter。
Dim connection As New Data.SqlClient.SqlConnection
Dim command As New Data.SqlClient.SqlCommand
connection.ConnectionString = "Server= server; Database= DB; integrated security=true"
command.CommandText = "INSERT INTO <table> (Col1, Col2, Col3, Col4) VALUES (@Name, @Property, @Value, @Date)"
command.Parameters.Add("@ServerName", SqlDbType.VarChar)
command.Parameters.Add("@Property", SqlDbType.VarChar)
command.Parameters.Add("@Value", SqlDbType.VarChar)
command.Parameters.Add("@CaptureDate", SqlDbType.DateTime)
connection.Open()
command.Connection = connection
For i As Integer = 0 To DataGridView.Rows.Count - 1
command.Parameters(0).Value = dgvServerConfig.Rows(i).Cells(0).Value
command.Parameters(1).Value = dgvServerConfig.Rows(i).Cells(1).Value
command.Parameters(2).Value = dgvServerConfig.Rows(i).Cells(2).Value
command.Parameters(3).Value = dgvServerConfig.Rows(i).Cells(3).Value
command.ExecuteNonQuery()
Next
但是,這將調用數據庫一次插入一行。 我認為最好查看SqlDataAdapter.Update方法,該方法只需一個調用即可解決插入/更新工作。
使用SqlDataAdapter.Update方法,要求您在填充DataGridView時將使用的適配器保存在全局變量中,並添加一個為您生成InsertCommand,UpdateCommand和DeleteCommand的SqlCommandBuilder
' At form loading'
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand("SELECT COL1, COL2,COL3,COL4 FROM TABLE", connection)
Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
connection.Open()
Dim myTable As DataTable = New DataTable
adapter.Fill(myTable)
DataGridView.DataSource = myTable
....
' at grid save'
Dim myTable = CType(DataGridView.DataSource, DataTable)
adapter.Update(myTable)
您可以調用: command.ExecuteNonQuery
將數據插入數據庫。
更多信息在這里
對於GridView中的每個對象,您需要找到它並確定其值。 例如
DropDownList ddlToLoc = (DropDownList)gvMovesMod.Rows[0].FindControl("ddlToLoc");
然后,確定ddlToLoc的SelectedValue並插入數據庫
嘗試此方法
For index As Integer = 0 To DataGridView1.RowCount - 1
Dim connectionString = "Data Source=localhost;port=3306;Initial Catalog=hasna;User Id=root;password=''; Convert Zero Datetime=True"
Dim query0 = "insert into itemledgerfinal(Date,BillDate,BillNo,ItemName,GST,Rate,MRP,TotalQty,PurchaseRate,WholesaleRate,Total,Type,OpeningBalance,Purchase,Sale,ClosingBalance,ID) values(@Date,@BillDate,@BillNo,@ItemName,@GST,@Rate,@MRP,@TotalQty,@PurchaseRate,@WholesaleRate,@Total,@Type,@OpeningBalance,@Purchase,@Sale,@ClosingBalance,@ID)"
Dim connection0 As New MySqlConnection(connectionString)
Dim command0 As New MySqlCommand(query0, connection0)
command0.Parameters.AddWithValue("@Date", DataGridView1.Rows(index).Cells(0).Value)
command0.Parameters.AddWithValue("@BillDate", DataGridView1.Rows(index).Cells(1).Value)
command0.Parameters.AddWithValue("@BillNo", DataGridView1.Rows(index).Cells(2).Value)
command0.Parameters.AddWithValue("@ItemName", DataGridView1.Rows(index).Cells(3).Value)
command0.Parameters.AddWithValue("@GST", DataGridView1.Rows(index).Cells(4).Value)
command0.Parameters.AddWithValue("@Rate", DataGridView1.Rows(index).Cells(5).Value)
command0.Parameters.AddWithValue("@MRP", DataGridView1.Rows(index).Cells(6).Value)
command0.Parameters.AddWithValue("@TotalQty", DataGridView1.Rows(index).Cells(7).Value)
command0.Parameters.AddWithValue("@PurchaseRate", DataGridView1.Rows(index).Cells(8).Value)
command0.Parameters.AddWithValue("@WholesaleRate", DataGridView1.Rows(index).Cells(9).Value)
command0.Parameters.AddWithValue("@Total", DataGridView1.Rows(index).Cells(10).Value)
command0.Parameters.AddWithValue("@Type", DataGridView1.Rows(index).Cells(11).Value)
command0.Parameters.AddWithValue("@OpeningBalance", DataGridView1.Rows(index).Cells(12).Value)
command0.Parameters.AddWithValue("@Purchase", DataGridView1.Rows(index).Cells(13).Value)
command0.Parameters.AddWithValue("@Sale", DataGridView1.Rows(index).Cells(14).Value)
command0.Parameters.AddWithValue("@ClosingBalance", DataGridView1.Rows(index).Cells(15).Value)
command0.Parameters.AddWithValue("@ID", DataGridView1.Rows(index).Cells(16).Value)
connection0.Open()
command0.Connection = Connection
command0.ExecuteNonQuery()
Next
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.