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中添加多个参数时,需要按次序添加和设值,不然将有可能出现不可预测的情况!这个问题难倒了我几天的时候,最终的解决办法是调整一下参数的次序即可。
有时候,按部就帮还是必要的?