您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

update语句不能更新数据库[asp.net]

这个问题真无厘头,因为无厘头,所以让人困惑。

有一日,我写了一个小页面,试图用参数化的OledbCommand更新数据库,像这样:

dim cmdstr as string
cmdstr = "update table set column1 = @column1, column2 = @column2 where id = @id"
dim cmd as OledbCommand
cmd = new OledbCommand(cmdstr,con)'设con为oledbConnection对象

cmd.parameters.add("@id",oledbtype.Integer)
cmd.parameters("@id").value = session("id")'假设有Session("id")

cmd.parameters.add("@column1",oledbtype.varchar)
cmd.parameters("@column1").value = column1.text'假设已设定column1及其值

...

cmd.connection.open()
msg.text = cmd.executeNonQuery() & "条记录被更新" '假设已经设定了id为msg的label
cmd.connection.close()

这一段代码执行时没有任何错误,然而却总是显示:“0条记录被更新”。数据库中确实存在某个合适的ID,这些参数的值也没有错。到底是怎么回事?难道update时不能使用参数化?

答案是肯定的,问题出在参数设置的次序上!当在oledbCommand中添加多个参数时,需要按次序添加和设值,不然将有可能出现不可预测的情况!这个问题难倒了我几天的时候,最终的解决办法是调整一下参数的次序即可。

有时候,按部就帮还是必要的?

作者 林剑锋 本文仅代表作者观点,与龙卷风资讯网立场无关。

我来说两句

1 楼 不见不散 发表于 2007-7-8 From IP: 58.63.219.232
一般如果需要读取源数据的话,需要在第一次加载时读取,即 !Page.IsPostBack 这个判断,如果没有加的话,也会出现更新不了的情况。
作者主页: 
内容/Content