vb.net - 为什么我的数据库没有更新?

标签 vb.net visual-studio ms-access visual-studio-2008 datagridview

我的问题是,当我在数据网格中编辑单元格时,数据库没有更新。 我使用的代码如下。

Public Class Form9
    Inherits System.Windows.Forms.Form
    Dim sql As String = "SELECT * FROM User_Account WHERE IsAdmin=False"
    Dim conn As New OleDb.OleDbConnection
    Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql, conn)
    Dim da As New OleDb.OleDbDataAdapter(sqlCom)
    Dim dt As New DataTable

    Private Sub Form9_Load(ByVal sender As Object, ByVal e As EventArgs) _
        Handles MyBase.Load

        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & _
            folderpath & "\TKIC\TKIC_Data_Storage.accdb'" & _
            ";Persist Security Info=True"
        conn.Open()
        da.Fill(dt)
        DataGridView1.DataSource = dt
    End Sub

    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)
        DataGridView1.Update()
        dt.AcceptChanges()
    End Sub
End Class

最佳答案

您必须更新基础 DataTableDataGridView.Update 导致控件重绘其工作区内的无效区域(基本上是重绘)。 dt.AcceptChanges() 仅提交 DataTable 而非数据库中的更改。必须使用适配器和适当的命令文本显式更新数据库。 OleDbCommandBuilder 有助于形成适当的命令文本。

使用 OleDbDataAdapter 更新数据库。

OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
cb.QuotePrefix = "[";
cb.QuoteSuffix = "]";
adapter.Update(datatable);

关于vb.net - 为什么我的数据库没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22281938/

相关文章:

asp.net - VB.net 向父级抛出错误

c# - 在 VS2008 中自动重新格式化整个 C# 源代码树的工具?

ms-access - 从 VB Access 调用 UDF(Sql 服务器) "Undefined function <function name> in expression"

sql - 在 Access VBA 的表中插入缺失值

asp.net - 网络资源.axd? - 500内部服务器错误

mysql - 如何在 VB 中从数据库字段创建按钮?

c# - 使用阻止在 VB.NET 中编译的自定义文本创建错误(C# 中的#error)

c++ - 为什么向量化对于几乎相同的代码表现不同?

visual-studio - 关闭 Visual Studio 中的自动大纲

database - MS Access 表单无需子表单即可更新多个表