【问题标题】:Writing an update query in asp.net (access database) (visual basic)在 asp.net(访问数据库)中编写更新查询(visual basic)
【发布时间】:2008-12-06 07:22:23
【问题描述】:

我有这个代码:

    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 中运行类似的语句,它运行良好。

【问题讨论】:

    标签: asp.net vb.net ms-access


    【解决方案1】:

    我认为缺少的是 SET。

    尝试:UPDATE table SET field = newvalue WHERE条件;

    只需修改:

    sql = "UPDATE tblAccounts SET balance = " & CDbl(balance + value) & " WHERE(accountID = " & accountID & ")"
    

    http://office.microsoft.com/en-us/access/HA100765271033.aspx

    【讨论】:

      【解决方案2】:

      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语句更清晰,还有助于防止可能的SQL注入攻击。

      【讨论】:

        【解决方案3】:

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

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

        顺便说一句,您在 asp.net 中使用了经典的 asp 样式代码。我建议阅读 ASP.net 上的一些文档以及如何以分层方式设计应用程序。

        【讨论】:

        • 非常感谢。关于正确的设计,您有网址吗?或者什么是关于这个主题的好书?谢谢。
        【解决方案4】:

        这里是一个好的开始:企业图书馆的数据访问应用程序块

        链接:http://aspnet.4guysfromrolla.com/articles/030905-1.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-25
          • 2019-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多