2008-12-06 59 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注入攻擊。