0

嗨,当我单击按钮更新数据库时,我在使用 vb.net 更新我的一个表时遇到了问题,它给了我错误“System.Data.OleDb.OleDbException:没有为一个或多个必需参数提供值。” 这是代码

Protected Sub Button6_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button6.Click
    Dim aConnection As New OleDbConnection
    Dim aCommand As New OleDbCommand
    Dim SQLQuery, aConnectionString As String
    Dim Text As String = TextBox1.Text
    Dim aDataAdapter As New OleDbDataAdapter
    Dim aDataReader As New DataSet
    SQLQuery = "Update Review Set report='Yes' Where Text='" & Text & "'"
    aConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("App_Data/BookReviewWebsite.accdb")
    aConnection = New OleDbConnection(aConnectionString)
    aConnection.Open()

    aCommand = New OleDbCommand(SQLQuery, aConnection)

    aCommand.ExecuteNonQuery()


    Label15.Text = "Review has been reported"

    aConnection.Close()

End Sub
4

1 回答 1

0

Review, Report and Text. 这里你有两个字段和一个表名,你应该检查你的数据库是否有效地包含一个名为的表Review,并且在这个表中,是否有两个名为reportand的字段Text

如果你真的有这个表和这些字段,那么你需要TEXT用方括号将这个词括起来,因为 TEXT 这个词是 Access 2007 中的保留关键字。

最后但并非最不重要的问题是查询字符串本身。以这种方式连接字符串可能是错误的来源。如果您的“文本”变量中有一个单引号,那么结果可能是不可预测的,范围从语法错误到Sql 注入

SQLQuery = "Update Review Set report='Yes' Where [Text]=?"
aCommand = New OleDbCommand(SQLQuery, aConnection)
aCommand.Parameter.AddWithValue("@p1", Text)
aCommand.ExecuteNonQuery()
于 2013-05-19T12:33:09.677 回答