代码之家  ›  专栏  ›  技术社区  ›  Gezim Tarang

在asp.net(access数据库)(visual basic)中编写更新查询

  •  1
  • Gezim Tarang  · 技术社区  · 17 年前

        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()
    

    但是,当我运行异常时,会引发异常:

    我试着在Access中运行类似的语句,效果很好。

    4 回复  |  直到 17 年前
        1
  •  1
  •   Joan Pham    17 年前

    我想失踪的人已经定了。

    Try:UPDATE table SET field=newvalue,其中包含条件;

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

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

        2
  •  1
  •   alextansc    17 年前

    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
  •  0
  •   shahkalpesh    17 年前

    它应该是UPDATE tablename SET fieldname=。。。其中[标准]。

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

    推荐文章