2008-12-06 61 views
1

我有这样的代码:写在asp.net(Access数据库)的更新查询(Visual Basic中)

Dim pathString As String = HttpContext.Current.Request.MapPath("Banking.mdb") 
    Dim odbconBanking As New OleDbConnection _ 
      ("Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
      "Data Source=" + pathString) 
    Dim sql As String 
    sql = "UPDATE tblAccounts balance = " & CDbl(balance + value) & " WHERE(accountID = " & accountID & ")" 
    odbconBanking.Open() 
    Dim cmd As New OleDbCommand(sql, odbconBanking) 
    cmd.ExecuteNonQuery() 

然而,抛出一个异常,当我运行它:在UPDATE语句 语法错误。

我试图在Access中运行类似的语句,它工作正常。

回答

0

您作为UPDATE的一部分缺少SET。

它应该是UPDATE tablename SET fieldname = ... WHERE [criteria]。

在附注中,您使用的是asp.net中的经典asp风格代码。我会建议阅读一些关于ASP.net的文档,以及如何以分层方式设计应用程序。

+0

非常感谢。 关于正确的设计,你有一个URL?甚至什么是关于这个问题的好书? 谢谢。 – Gezim 2008-12-06 07:30:00

1

的SQL语句肯定缺少SET关键词。另外,我建议你刷上parameterized query

Dim sql As String = "UPDATE tblAccounts " & _ 
        "SET balance = ? " & _ 
        "WHERE(accountID = ?)" 

Dim cmd As New OleDbCommand(sql, odbconBanking) 

cmd.Parameters.Add("Balance", CDbl(balance + value)) 
cmd.Parameters.Add("AccountId", accountID 

cmd.ExecuteNonQuery() 

这样一来,不仅是SQL Statment更清晰,也有助于防止可能的SQL注入攻击。