在 asp.net(访问数据库)中编写更新查询(visual basic)
Posted
技术标签:
【中文标题】在 asp.net(访问数据库)中编写更新查询(visual basic)【英文标题】:Writing an update query in asp.net (access database) (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 中运行类似的语句,它运行良好。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在 asp.net(访问数据库)中编写更新查询(visual basic)的主要内容,如果未能解决你的问题,请参考以下文章