嗨我在使用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
答案 0 :(得分:0)
Review, Report and Text
。这里有两个字段和一个表名,你应该检查你的数据库是否有效地包含一个名为Review
的表,如果在这个表中有两个名为report
和Text
的字段。
如果你真的有这个表和这些字段,那么你需要用方括号括起单词TEXT
,因为在Access 2007中单词TEXT是一个保留关键字。
最后,但问题不仅仅是查询字符串本身。以这种方式连接字符串可能是错误的来源。如果您的“文本”变量中有单引号,那么结果可能是不可预测的,范围从语法错误到Sql Injection
SQLQuery = "Update Review Set report='Yes' Where [Text]=?"
aCommand = New OleDbCommand(SQLQuery, aConnection)
aCommand.Parameter.AddWithValue("@p1", Text)
aCommand.ExecuteNonQuery()