为什么我的数据库没有更新?

时间:2014-03-09 12:04:11

标签: 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

1 个答案:

答案 0 :(得分:3)

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

使用OleDbDataAdapter更新数据库。

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