vb.net - 为什么我的 vb.net 代码不会改变我的 Access2007 数据库
问题描述
我有一个 Access database2007 并尝试使用下面显示的代码编辑内容。代码运行无异常,但原始数据没有改变。该数据库有一个主键 (ID) 和大约 20 列。使用相同的数据库并使用 Adapter.Update(ds) 添加新行可以正常工作 - (此处未显示)。现在我编写了一个最小的代码来更改特定列 (=4) 中的内容以查看发生了什么问题,但没有显示错误并且数据库没有更改。我将 VS 2019 用于 .exe 应用程序。
有什么建议和/或如何解决它?/库尔特 J
Private Sub Button2_Click_(sender As Object, e As EventArgs) Handles Button2.Click
'testa att uppdatera databas
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)
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"
Else
MsgBox("No rows to edit")
cnnTävl.Close()
Exit Sub
End If
cb.GetUpdateCommand()
Adapter.Update(ds)
Catch Er As Exception
MsgBox("Er= " + Er.Message)
End Try
cnnTävl.Close()
End Sub
解决方案
我从来没有使用过适配器,但是你有一个
BeginEdit()
没有对应的EndEdit()
.Adapter.Update(ds)
应该返回受影响的行数,所以不要忽略它。
EndEdit()
解决了这个问题。我在网上看到的所有示例都没有使用EndEdit()
,但可能示例太旧了。
谢谢拉斯的帮助。
推荐阅读
- sql - 带有内部连接的postgresql更新查询
- amazon-s3 - Tableau + S3:通过 tableau 从 S3 存储桶下载文件
- java - 强制设置者到一个类。在测试方法中填充值
- python - 将字典添加到现有键值时出现此错误的问题
- javascript - 在本地托管 jQuery 会导致动画计数器关闭一个数字
- excel - 删除所有具有自动填充值的行
- c++ - 关于继承的棘手 C++ 代码输出的问题
- facebook - 缺少“将 Messenger 添加到您的网站”部分
- python - 正则表达式和删除括号
- python - 将某些 pandas 数据框列值从一列移动到另一列,并用 Nan 替换旧位置