参数化查询未提供参数这是怎么回事?已经提供参数了啊。。

zh6335901 2011-04-17 11:39:05
protected void btnUpdate_Click(object sender, EventArgs e)
{
string strCon = @"Server=.\SQLExpress;Integrated Security=true;AttachDbFileName=|DataDirectory|USERDATA.mdf;"
+"User Instance=true";
using(SqlConnection conn=new SqlConnection(strCon))
{
string update = "UPDATE UDATA SET PASSWORD=@PASSWORD WHERE USERNAME=@USERNAME";
conn.Open();
using(SqlCommand cmd=new SqlCommand(update,conn))
{
cmd.Parameters.AddWithValue("@PASSWORD",txtNew.Text);
cmd.Parameters.AddWithValue("@USERNAME",userName);
cmd.ExecuteNonQuery();
}
conn.Close();
Server.Transfer("go.aspx");
}
老是报错,说我未给@USERNAME提供参数,之前已定义private string userName;然后在Page_Load事件里给userName赋值
userName=Request.Form["txtUserName"];
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zh6335901 的回复:]
我明白了。。是不是点击事件以后因为没有提交值,所以userName就为空了
[/Quote]
http://topic.csdn.net/t/20050304/00/3823052.html
你看下就明白了

还可以这样解决:
http://blog.csdn.net/lovecherry/archive/2005/03/01/306012.aspx

加了static时,该变量就成了全局变量了,当然可在类中的方法中传递了,但是不建议使用static
zh6335901 2011-04-17
  • 打赏
  • 举报
回复
我明白了。。是不是点击事件以后因为没有提交值,所以userName就为空了
叶子 2011-04-17
  • 打赏
  • 举报
回复

//最简单的方式,你在页面上建一个hidden的input,Page_Load的时候,把值给input,

ipt_username.value=Request.Form["txtUserName"].ToString();

//然后点击后上input上面来取值,例如input的name为ipt_username

cmd.Parameters.AddWithValue("@USERNAME",ipt_username.value);
叶子 2011-04-17
  • 打赏
  • 举报
回复
你断点调试一下就知道了userName为null了。

你在Page_Load中赋得值,在点击事件以后,就为null了。

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧