sql - 无法从 vb.net 更新 MS Access 数据库
问题描述
我可以通过 vb.net 应用程序在我的 MS 访问中添加、删除和搜索数据,但无法更新。它运行并完成更新查询,但不更新数据库,也不会出现任何错误。我是 VB.net 和 sql 的新手,并且一直遵循指南来获取我目前所拥有的内容。
我用于添加新记录的编码(对我来说很好):
Private Sub Savebtn_Click(sender As Object, e As EventArgs) Handles Addbtn.Click
Dim Insertquery As String = "Insert into Risk_Register(ID, Risk_Name, Risk_Description, Owner, Control, Probability, Impact, Risk_Level) values (@ID, @Risk_Name, @Risk_Description, @Owner, @Control, @Probability, @Impact, @Risk_Level)"
Runquery(Insertquery)
MsgBox("The record has been added successfully to the database.", 0, "Information")
End If
End Sub
用于更新(不更新)
Private Sub Updatebtn_Click(sender As Object, e As EventArgs) Handles Updatebtn.Click
Dim Updatequery As String = "Update Risk_Register Set Risk_Name=@Risk_Name, Risk_Description=@Risk_Description, Owner=@Owner, Control=@Control, Probability=@Probability, Impact=@Impact, Risk_Level=@Risk_Level Where ID=@ID"
Runquery(Updatequery)
MsgBox("The record has been updated successfully in the database.", 0, "Information")
End Sub
运行查询编码
Public Sub Runquery(ByVal query As String)
con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ahmed\OneDrive\Desktop\ProjectDatabase2003.mdb")
Dim cmd As New OleDbCommand(query, con)
cmd.Parameters.AddWithValue("@ID", txtRiskid.Text)
cmd.Parameters.AddWithValue("@Risk_Name", txtRiskname.Text)
cmd.Parameters.AddWithValue("@Risk_Description", txtRiskdescription.Text)
cmd.Parameters.AddWithValue("@Owner", txtOwner.Text)
cmd.Parameters.AddWithValue("@Control", txtControl.Text)
cmd.Parameters.AddWithValue("@Probability", txtProbability.Text)
cmd.Parameters.AddWithValue("@Impact", txtImpact.Text)
cmd.Parameters.AddWithValue("@Risk_Level", txtRisklevel.Text)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Sub
解决方案
与 OleDb 提供程序一起使用时,Access 不能按名称识别参数。您必须按照 Access 期望的顺序提供参数值。
在您的UPDATE
中,Access@ID
期望值最后。但是您的RunQuery
过程将其作为第一个参数值提供。
您可以修改该过程以提供@ID
first 用于 anINSERT
和 last 用于 an UPDATE
。或者,您可以使用RunQuery
forINSERT
并为UPDATE
.
推荐阅读
- delphi - 如何设置 Mock 以测试是否根据 CUT 中的条件调用方法
- jmeter - 如何解决 Web 套接字 I/O 错误:jmeter 中的连接被拒绝?
- javascript - 在 Xamarin.Forms iOS 中的 Javascript 和 WebView 本机代码之间进行通信
- blazor - Blazor Web 程序集重定向到控制器
- javascript - Puppeteer - 测试页面的不同选择器
- javascript - 将 JSON 文件绑定到 Echarts(JQuery 获取)
- google-bigquery - 通过 CLI 将存储桶中的 AVRO 加载到具有日期分区的 BigQuery 中
- angularjs - 最小和最大的Angular JS指令表单输入验证
- python - 如何训练项目序列分割模型
- django - 在 Django 中一次更新其中一个时,如何反映两个一对多关系实例的更改?