.net Oledeb命令生成器,搞错了

.net Oledeb命令生成器,搞错了,.net,vb.net,ms-access,oledb,.net,Vb.net,Ms Access,Oledb,这将是我的命令和我的参数,但我抛出了一个错误,所以我弄错了,但我不知道如何修复它,错误告诉您:更新影响了0,而它应该影响一个 那么,我哪里弄错了 编辑:数据库类型 不幸的是,我们对您的数据了解不够,无法帮助您。但是,这里是你可以帮助自己的方法。将该更新转换为SELECT,然后查看您得到的结果。您的WHERE-sql看起来很奇怪,但是如果没有数据,当它完全符合逻辑时,它可能看起来很奇怪 Using con = New OleDbConnection("Provider=Microsoft.ACE.

这将是我的命令和我的参数,但我抛出了一个错误,所以我弄错了,但我不知道如何修复它,错误告诉您:更新影响了0,而它应该影响一个

那么,我哪里弄错了

编辑:数据库类型


不幸的是,我们对您的数据了解不够,无法帮助您。但是,这里是你可以帮助自己的方法。将该更新转换为SELECT,然后查看您得到的结果。您的WHERE-sql看起来很奇怪,但是如果没有数据,当它完全符合逻辑时,它可能看起来很奇怪

Using con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = Mokmeuh.accdb")
        con.Open()
        dAdapter.UpdateCommand = New OleDbCommand("UPDATE Articles SET Nom = @p1, Prix = @p2, Quantité = @p3 WHERE ((Nom = @p1) AND ((@p2 = 1 AND Prix IS NULL) OR (Prix = @p2)) AND ((@p2 = 1 AND Quantité IS NULL) OR (Quantité = @p3)))", con)
        dAdapter.UpdateCommand.Parameters.Add("@p1", OleDbType.VarChar, 4, "Nom")
        dAdapter.UpdateCommand.Parameters.Add("@p2", OleDbType.Single, 4, "Prix")
        dAdapter.UpdateCommand.Parameters.Add("@p3", OleDbType.Integer, 4, "Quantité")

        dAdapter.Update(dSet.Tables("Articles_table"))
    End Using

我会剥去你的update语句,然后一步一步地找出错误。另外,一个好主意是访问并在其中构建SQL,这里有一个查询编辑器,您可以在其中写出此语句,如果它在那里显示没有结果,您就不知道这不是错误的代码。你需要尝试一步一步地解决这样的问题。请不要像某些版主那样用文本更新问题内容。请删除此内容等。我已回滚该更新。如果您仍然愿意,您可能需要主持人的关注,但我认为该请求不会被接受,因为这个问题已经有了答案。很抱歉,缺少数据,您还需要什么?表格?您是否尝试了上述选择想法?如果你这样做,我们不需要数据。给我一点时间,我在课堂上,你想让我用vb还是MS Access运行它?你必须用vb,因为它有你的参数。另外,为了将来的参考,如果您认为它应该处理一些记录,那么示例数据应该至少包括代码中列出的所有字段(对于1-2条记录)以及每个参数的值。在我测试时,我已经更新了表名,如果需要,请查看所有内容
SELECT * FROM Articles WHERE ((Nom = @p1) AND ((@p2 = 1 AND Prix IS NULL) OR (Prix = @p2)) AND ((@p2 = 1 AND Quantité IS NULL) OR (Quantité = @p3)))