[英]How to insert new datagridview row in datagridview and update (automatically) in database?
[英]How to insert the current selected row in Datagridview to the Database
For i As Integer = Me.DataGridView1.SelectedRows.Count - 1 To 0 Step -1
Dim SDA1 As New MySqlDataAdapter
Dim bSource1 As New BindingSource
Dim dbDataSet1 As New DataTable
qty = DataGridView1.Rows(i).Cells(0).Value
auth = DataGridView1.Rows(i).Cells(1).Value()
title = DataGridView1.Rows(i).Cells(2).Value()
callnumber = DataGridView1.Rows(i).Cells(3).Value()
shelf = DataGridView1.Rows(i).Cells(4).Value()
Dim Query As String
Query = "Insert into returnedlist(quantity,author,title ,call_number,shelf,student_id,due_date,date_added) values('" & qty & "','" & auth & "','" & title & "','" & callnumber & "','" & shelf & "','" & TextBox2.Text.ToString & "','" & DateTimePicker1.Text & "', Now())"
COMMAND = New MySqlCommand(Query, MysqlConn)
SDA1.SelectCommand = COMMAND
SDA1.Fill(dbDataSet1)
bSource1.DataSource = dbDataSet1
Me.DataGridView1.DataSource = bSource1
SDA1.Update(dbDataSet1)
Next
**Code for Select**
ElseIf ComboBox2.Text = "Author" Then
Dim Query As String
Query = "Select id as 'ID', quantity as 'Qty',author as 'Author',title as 'Title',call_number as 'Call Number',location as 'Shelf #' from librarydb.blist where author like'%" & TextBox1.Text & "%' ORDER by author"
COMMAND = New MySqlCommand(Query, MysqlConn)
SDA.SelectCommand = COMMAND
If SDA.Fill(dbDataSet) Then
bSource.DataSource = dbDataSet
DataGridView1.DataSource = bSource
TextBox1.Text = ""
ComboBox2.Text = ""
Else
TextBox1.Text = ""
ComboBox2.Text = ""
MessageBox.Show("No Results found", "Informed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
我想做的是我要在数据库中插入我在Datagridview中选择的行。
该代码有效,但问题是: 即使我选择选择row3,也总是在datagridview中将row1插入到db中。
它与Datagridview的属性有关吗?
MySqlDataAdapter
的Update
方法具有更新作为输入传递的DataTable中存在的所有行的能力,这些行的RowState
属性与值Unchanged
不同。
当您编辑绑定到DataTable的DataGridView时,在网格上所做的更改将立即反映在基础DataTable中,并且所编辑的行的RowState属性将根据所做的编辑进行相应更改。
要完成此工作,您需要做一些事情。
首先全局声明用于检索数据表的MySqlDataAdapter
Dim SDA1 As MySqlDataAdapter
然后在加载数据表的代码中,请确保还包括作为您的主键的列
' Here ID is assumed to be your primarykey'
SDA1 = New MySqlDataAdapter("SELECT ID, ...... FROM returnedlist", connection)
SDA1.Fill(yourDataTable)
Dim bSource1 As New BindingSource
bSource1.DataSource = yourDataTable
dataGridView1.DataSource = bSource1
现在,您可以使用MySqlCommandBuilder自动创建MySqlDataAdapter的InsertCommand,UpdateCommand和DeleteCommand属性。
Dim builder = new MySqlCommandBuilder(SDA1)
最后,当您准备更新数据时,您只需编写
Dim yourBindingSource = dataGridView1.DataSource As BindingSource
SDA1.Update(yourBindingSource.DataSource as DataTable)
网格行上不需要循环,也无需手动构建InsertCommand及其参数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.