繁体   English   中英

用VB实现ASP.net中Sql server的参数化更新查询

[英]Parameterized Update Query for Sql server in ASP.net with VB

我正在尝试编写一个paramaterized更新查询,以将值插入到Sql Server Express数据库中。 我写的查询是:

Dim cmd As New SqlCommand
cmd.Connection = conn
cmd.CommandText = "update tblposts set title=@ptitle, pdate=@pd, 
                   content=@pcontent where pid=@p"
cmd.Parameters.AddWithValue("ptitle", txtTitle.Text)
cmd.Parameters.AddWithValue("pcontent", txtcontent.InnerText)
cmd.Parameters.AddWithValue("pd", DateTime.Now.ToString)
cmd.Parameters.AddWithValue("p", postid)

在运行cmd.ExecuteNonQuery ,我将受影响的行数作为1,但更改未反映在数据库中。

在使用Debug.Write打印查询时,我得到的查询不是参数值,而是参数本身的名称(即@pcontent,@ title等)

这可能是什么错误?

在你的AddWithValue你需要在参数的前面加上@符号,所以:

cmd.Parameters.AddWithValue("@ptitle", txtTitle.Text)
cmd.Parameters.AddWithValue("@pcontent", txtcontent.InnerText)
cmd.Parameters.AddWithValue("@pd", DateTime.Now.ToString)
cmd.Parameters.AddWithValue("@p", postid)

我猜它正在执行但是where子句是空的,所以可能更新一个空行。

无论如何,尝试以上,它应该按预期更新。

编辑添加

CommandText总是只有@value ,它不会将参数值替换为字符串。

您需要遍历cmd.Parameters集合以写出值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM