如何在vb.net中更新MS Access数据库

时间:2013-05-19 11:58:19

标签: vb.net

嗨我在使用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

1 个答案:

答案 0 :(得分:0)

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

如果你真的有这个表和这些字段,那么你需要用方括号括起单词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()