我想在我的 vb.net 中更新我的访问数据库,但总是出错
Posted
技术标签:
【中文标题】我想在我的 vb.net 中更新我的访问数据库,但总是出错【英文标题】:I want to update my access database in my vb.net but always getting error 【发布时间】:2015-04-28 13:08:04 【问题描述】:这是我的代码
Private Sub ButtonEdit_Click(sender As Object, e As EventArgs) Handles ButtonEdit.Click
Dim cb As New OleDb.OleDbCommandBuilder(da)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
ds.Tables("ProductDatabase").Rows(inc).Item("BARCODE") = TextBoxBarcode.Text
ds.Tables("ProductDatabase").Rows(inc).Item("PRODUCT NAME") = TextBoxProductName.Text
ds.Tables("ProductDatabase").Rows(inc).Item("PRINCIPAL") = TextBoxPrincipal.Text
ds.Tables("ProductDatabase").Rows(inc).Item("BUYING PRICE") = TextBoxBuying.Text
ds.Tables("ProductDatabase").Rows(inc).Item("SELLING PRICE") = TextBoxSelling.Text
da.Update(ds, "ProductDatabase")
MsgBox("Data successfully edited.")
然后显示此消息:
不支持为 UpdateCommand 生成动态 SQL 一个不返回任何键列信息的 SelectCommand
高亮部分是
da.Update(ds, "ProductDatabase")
【问题讨论】:
【参考方案1】:假设 BARCODE 实际上是您正在编辑的表的主键,请尝试将 [ 和 ] 放在两个单词字段名称周围,例如“[PRODUCT NAME]”。
【讨论】:
谢谢@BCole。最后我通过添加这些代码成功地将 BARCODE 作为我的主键:Dim dColumn() As DataColumn = ds.Tables("ProductDatabase").Columns("BARCODE") ds.Tables("ProductDatabase").PrimaryKey = dColumn
但我又遇到了 1 个问题。当我运行我的程序时,它显示以下消息:Column 'BARCODE' is constrained to be unique. Value '8993027133205' is already present
你知道这是什么吗?
您的表的主键必须是唯一的。与其在代码中定义它,不如编辑表格并将其设为主键。您的代码将自动获取它。如果您不能拥有唯一的条形码,那么您将必须添加一个包含唯一值的列,例如自动编号,并将其作为主键。无论键是什么,在您的选择中包含该字段,以便更新工作。
哇这对我来说真的很管用。程序正在运行。正如你所说,我将自动编号作为我的主键。但是,当我通过单击 edit_button 编辑数据时,我的数据库根本没有更新。你能帮帮我吗?以上是关于我想在我的 vb.net 中更新我的访问数据库,但总是出错的主要内容,如果未能解决你的问题,请参考以下文章