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

时间:2012-11-19 11:38:38

标签: asp.net vb.net

我正在尝试编写一个参数化的更新查询,以便将值插入到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等)

这里有什么错误?

1 个答案:

答案 0 :(得分:4)

在您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集合才能写出值。