我想在我的 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 中更新我的访问数据库,但总是出错的主要内容,如果未能解决你的问题,请参考以下文章

我无法在我的访问数据库中插入值

如何使用 vb.net 从查询创建访问报告

从 vb.net 中的访问中计算特定记录

vb.net 将数据源设置为组合框

在 vb.net 中列出名称和数据表单注册表项

来自访问数据库的 Vb.Net 预览报告