【问题标题】:no value given for one or more required parameters没有为一个或多个必需参数指定值
【发布时间】:2011-01-23 15:21:39
【问题描述】:

这里出了什么问题,即使我之前使用的相同代码有效,我总是会遇到一些令人讨厌的错误。但是当我将它应用到其他形式时,它给了我上面的错误。 这是我的代码:

Imports System.Data.OleDb
Public Class Updater2
    Public adminID As String
    Public adminName As String
    Public adminPass As String

    Private con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Jet OLEDB:Database Password=nrew123$%^;")
    Private com As OleDb.OleDbCommand

    Public Sub New()
        con.Open()
        com = New OleDb.OleDbCommand("Select * from admintable")
        com.Connection = con



    End Sub

    Public Sub updates()
        com.CommandText = "UPDATE admintable SET AdminName = '" & adminName & "', AdminPassS = '" & adminPass & "' WHERE ID = '" & adminID & "'"
        com.ExecuteNonQuery()

    End Sub
End Class

这是按钮中尝试更新数据的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        shikai.adminID = textbox1.text
        shikai.adminName = TextBox4.Text
        shikai.adminPass = TextBox3.Text






        shikai.updates()
        MsgBox("Successfully updated!")
    End Sub

这里可能有什么问题?

【问题讨论】:

  • 在我看来,SQL 注入的代码已经成熟(尽管不是 DML,因为 Jet/ACE 不能执行多个语句)。你真的应该使用参数。
  • 我从没想过sql注入可以存在于通过vb.net制作的客户端应用程序中。谢谢
  • 使用 Jet 后端,风险很低,因为唯一的风险是泄露太多数据(用户试图利用您的代码放入一个表达式,所有行的计算结果都为 TRUE) ,但这本身可能是一个问题,特别是对于 UPDATE,它最终可能会更改所有行中的数据,而不仅仅是所需的子集中。

标签: vb.net ms-access


【解决方案1】:

SELECT pt.person_name,pt.obile_no,pt.address_info FROM person_table pt LEFT JOIN company_table ct ON pt.com_id=ct.com_id WHERE pt.com_id=14

我将它用于访问数据库,然后发生了这种类型的错误“没有为一个或多个必需参数提供值”。

我确实犯了 pt.obile 之类的拼写错误,但它会是 pt.mobile。当我更正时,它运行良好。

【讨论】:

    【解决方案2】:

    当将命令文本粘贴到 access 本身并弹出 Access 告诉您哪个字段是问题时,如果似乎没有类型,请尝试将字段名称括在方括号中。 [ ] 您的某一列可能包含关键字。这发生在我身上,LL_ID 列 - 我必须将其更改为 [LL_ID]。

    【讨论】:

      【解决方案3】:

      此错误的通常原因是缺少或拼写错误的值。 adminName 似乎很可能是 Null 或零长度字符串。

      【讨论】:

      • 抱歉,这只是一个简单的拼写错误:AdminPassS = '" & adminPass must be AdminPass..but any way 感谢您的回答
      【解决方案4】:

      在为 Access 后端开发时处理 no value given for one or more required parameters 错误的一个好技巧是获取 CommandText 的内容并将其粘贴到 Access 本身的虚拟查询中。然后 Access 将向您提供一个弹出窗口,确定是哪个字段导致了问题(通常是拼写错误,如您的情况)。

      【讨论】:

      • 不错,这里真的很不错,我可以从像你这样的怪物那里得到很多好技巧,谢谢:)
      • 谢谢 - 不得不处理遗留数据库,我已经忘记了我所有的访问技巧!
      猜你喜欢
      • 2017-12-25
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多