You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET操作Access2007无报错但数据库数据未修改该如何解决

问题根源排查
  • 核心问题:代码调用了DataRow.BeginEdit()开启行编辑模式,但修改字段值后没有调用DataRow.EndEdit()提交编辑,行的RowState不会变更为Modified,数据适配器Update方法检测不到需要更新的行,自然不会执行数据库更新操作。
  • 潜在问题1:未加载表主键元数据,OleDbCommandBuilder生成更新命令时需要依赖主键做行匹配,若填充数据集时未加载架构信息,可能导致生成的更新命令匹配不到对应行,更新无效。
  • 潜在问题2:默认VS调试时会将项目目录下的Access数据库文件复制到bin\Debug输出目录,程序修改的是输出目录的数据库文件,而非项目源文件,容易产生「未更新」的错觉。
修复代码
Private Sub Button2_Click_(sender As Object, e As EventArgs) Handles Button2.Click
    '测试更新数据库
    cnnTävl = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + TPath + AktTävlNamn + "_" + AktTävlDat + ".mdb")
    Dim strSQL = "Select * FROM Deltagare WHERE Patrull='12' AND Figur='01'"
    Dim cmd As New OleDb.OleDbCommand(strSQL, cnnTävl)
    Dim Adapter As New OleDb.OleDbDataAdapter(cmd)
    ' 新增:加载表架构信息,确保主键被识别
    Adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
    Dim ds As New DataSet
    Dim cb As New OleDb.OleDbCommandBuilder(Adapter)
    Stop
    Try
        cnnTävl.Open()
        Adapter.Fill(ds)
        If ds.Tables(0).Rows.Count = 1 Then
            ds.Tables(0).Rows(0).BeginEdit()
            ds.Tables(0).Rows(0).Item(4) = "Bo Ek"
            ' 新增:提交行编辑,变更行状态为Modified
            ds.Tables(0).Rows(0).EndEdit()
        Else
            MsgBox("No rows to edit")
            cnnTävl.Close()
            Exit Sub
        End If
        cb.GetUpdateCommand()
        ' 新增:获取更新受影响行数,可用于调试确认
        Dim affectedRows As Integer = Adapter.Update(ds)
        ' 调试时可打开下方代码确认是否成功执行更新
        ' MsgBox("更新行数:" & affectedRows)
    Catch Er As Exception
        MsgBox("Er= " + Er.Message)
    End Try
    cnnTävl.Close()
End Sub
额外验证建议
  • 若修改后受影响行数返回1,但仍看不到数据库变更,可检查数据库文件属性:在VS解决方案资源管理器中选中mdb文件,右键属性,将「复制到输出目录」选项改为「如果较新则复制」,避免每次调试都覆盖修改后的数据库文件。
  • 避免使用列索引(Item(4))修改字段,建议改用字段名(Item("字段名")),防止表结构变更后列索引偏移导致修改错字段。

内容的提问来源于stack exchange,提问作者Kurt Johansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:02