asp.net中修改密码的代码.

如图,求大神解答! protected void btnSave_Click(object sender, EventArgs e) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from User where User_Account='" + Session["User_Account"].ToString() + "'and User_Pwd='" + txtPwd.Text.Trim() + "'"; SqlDataReader sdr = cmd.ExecuteReader(); try { if (sdr.Read()) { SqlCommand updatecmd = new SqlCommand("update User set User_Pwd='" + txtPwd2.Text.Trim() + "'where User_Account='" + Session["User_Account"].ToString() + "'", conn); int i = updatecmd.ExecuteNonQuery(); if (i == 1) { Response.Write("密码修改成功"); } else { Response.Write("密码修改失败'"); } } else { Response.Write("原密码错误"); } } catch (System.Exception ee) { Response.Write("<script language =javascript>alert('" + ee.Message.ToString() + "')</script>"); } finally { conn.Close(); sdr.Close(); }
SqlConnection conn = new SqlConnection("Data Source=LENOVO-PC\\MRWWK;Initial Catalog=Book;Persist Security Info=True;User ID=sa;Password=123456");
protected void btnSave_Click(object sender, EventArgs e)
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from User where User_Account='" + Session["User_Account"].ToString() + "'and User_Pwd='" + txtPwd.Text.Trim() + "'";
SqlDataReader sdr = cmd.ExecuteReader();
try
{
if (sdr.Read())
{
SqlCommand updatecmd = new SqlCommand("update User set User_Pwd='" + txtPwd2.Text.Trim() + "'where User_Account='" + Session["User_Account"].ToString() + "'", conn);
int i = updatecmd.ExecuteNonQuery();
if (i == 1)
{
Response.Write("密码修改成功");
}
else
{
Response.Write("密码修改失败'");
}
}

检查一下cmd.CommandText=这一句,特别是Session["User_Account"].ToString()这个,调试看一看到底有没有值。

小技巧:“未将对象引用设置到对象的实例”多数原因就是因为对象内部没有值,比如null之类的造成的。

追问

怎么调试啊。。。数据库里有值啊

追答

用断点调试吧,给cmd.CommandText下面那句话打一个断点(VS2013里选中这行按F9也行),然后再运行程序,然后程序就会运行到断点处,此时把鼠标放到cmd.CommandText上,看显示的sql语句是什么样子,会不会原因就是sql语句拼接的不完整。
数据库虽然有值,但那只是数据库的值。这里要强调的是sql语句到底对不对。比如Session["User_Account"]根本没获取到Session所以是空之类的。如果sql语句拼接都不完整,那么肯定无法从数据库查询到数据。报错信息里明确给出了出错的语句位置以及出错原因,因此问题肯定就是sql语句这里。

追问

这样....就是说SQL语句不对吧

追答

SQL语句倒是没什么问题,主要在于C#代码部分,而且很有可能是Session根本没获取到值。这样,你尝试在cmd.CommandText这一句上面写一句string test = Session["User_Account"].ToString();然后再在cmd.CommandText这一句打个断点调试,之后鼠标放变量test上,看这个test上有没有显示什么值,如果没有显示你预想的值,说明Session都是空的。如下图所示,如果变量真获取到值,那么可以看到:

如果Session值真是空的,那么就要想一想,自己在哪个页面里写了“设置Session”的代码,比如登录界面之类的。如果真是这样,那么你在测试当前这个页面前,还要先执行一遍其他网页,因为没访问A页面,所以Session都没有值,因此你在B页面拿不到Session值

追问

非常感谢,问题解决了,谢谢您

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网