Datagridview 中的更改未保存在表 SQLite vb.net 中
Posted
技术标签:
【中文标题】Datagridview 中的更改未保存在表 SQLite vb.net 中【英文标题】:Changes in Datagridview not saving in table SQLite vb.net 【发布时间】:2017-05-30 04:57:13 【问题描述】:我正在尝试将对 datagridview 所做的更改保存到表 tbl_invent 中,我对 datagridview 所做的更改但它没有保存到表(数据库)中,它也没有任何错误,我收到的只是一条消息说“记录更新= 0”。谁能指出我正确的方向?
Dim da As New SQLiteDataAdapter("select * from tbl_Invent", connection)
Dim ds As New DataSet
'Dim cmdbuilder As New SQLite.SQLiteCommandBuilder(da)
Dim i As Integer
da.TableMappings.Add("tbl_Invent", "tbl_Invent") 'add due to error unable to Update unable to find TableMapping['Table'] or DataTable 'Table'
Try
i = da.Update(ds, "tbl_Invent")
MsgBox("Records Updated= " & i)
Catch ex As Exception
MsgBox(ex.Message)
End Try
connection.Close()
我已经查看了这个帖子: How to save changes from DataGridView to the database?
-和-
Datagridview save changes to Database vb.net
非常感谢您。
【问题讨论】:
根据该代码,您正在创建一个新的,即 EMPTY,DataSet
,然后尝试将其中包含的更改保存回您的数据库。如果DataSet
根本不包含任何内容,那么显然它不包含任何更改,因此没有什么可保存的。您需要先创建一个DataTable
并将其绑定到网格,然后在网格中进行更改,然后将该DataTable
传递给您的Update
调用。
我添加了 dim dt 作为新的数据表,da.Fill(dt),DataGridView1.DataSource = dt 然后更改 da.update(ds,"dt")。仍然没有保存。我想我在 da.update 中犯了一个错误……或者我所做的都是错的?
@jmcilhinney 在 vbforums 中阅读了您的答案后(我假设它是您的同名),我还添加了 Dim dt As DataTable = ds.Tables("tbl_Invent"),仍然没有任何保存
【参考方案1】:
很明显,如果您在创建/填充DataTable
和尝试保存更改之间不进行任何更改,您将不会保存任何更改。您需要创建DataTable
,将其填充并以一种方法绑定(可能是表单的Load
事件处理程序),然后用户进行更改,然后将相同DataTable
的更改保存在另一个方法(可能是Button
的Click
事件处理程序。例如
Private table As New DataTable
Private adapter As New SqlDataAdapter("SQL query here", "connection string here")
Private builder As New SqlCommandBuilder(adapter)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
adapter.Fill(table)
BindingSource1.DataSource = table
DataGridView1.DataSource = BindingSource1
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BindingSource1.EndEdit()
adapter.Update(table)
End Sub
DataTable
是在表单创建时创建的,用户在网格中进行更改并单击Button
,然后您从相同的DataTable
保存更改,而不是您刚刚创建的新更改不包含任何更改。
【讨论】:
谢谢你。我在 VB 中编码非常生锈,现在我正在尝试重新学习所有内容(我停止编码 vb 6 仍然是新的)。快速提问虽然我有 5 个相同形式的数据网格视图(每个选项卡中有 1 个),我猜我将为每个数据表创建一个数据表,它可以放在 tabpage_enter() 事件中吗?还是必须在 onload 事件上?以上是关于Datagridview 中的更改未保存在表 SQLite vb.net 中的主要内容,如果未能解决你的问题,请参考以下文章