小弟做了一个网页用户的密码修改,但是出现了一个问题解决不了,下面密码修改的后台代码以及运行后的错误显示,烦请路过的大侠们帮们解决一二,不胜感激!
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class changecode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.Session["memberlogin"] == null)
{
Response.Redirect("login.aspx");
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{ string code = FunStr(ToMD5(Oldcode.Text.ToString()));
string newcode = FunStr(ToMD5(Newcode.Text.ToString()));
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connstr"]);
SqlCommand selectCmd = new SqlCommand("select * from userinformation where name='" + Session["name"].ToString() + "'and code='" + code + "'",conn);
try
{
conn.Open();
SqlDataReader sdr = selectCmd.ExecuteReader();
if (sdr.Read())
{
Response.Write("change");
sdr.Close();
SqlCommand updateCmd = new SqlCommand("update userinformation set code='" + newcode + "' where name='" + Session["name"].ToString() + "'", conn);
int i = updateCmd.ExecuteNonQuery();
if (i > 0)
{
Response.Write("<script language=javascript>alert('成功修改密码!')</script>");
}
else
{
Response.Write("<script language=javascript>alert('修改密码失败!')</script>");
}
}
else
{
Response.Write("<script language=javascript>alert('您输入的密码错误,检查后重新输入!')</script>");
}
}
catch (System.Exception ee)
{
Response.Write("<script language=javascript>alert('" + ee.Message.ToString() + "')</script>");
}
finally
{
conn.Close();
}
}
protected void btnReset_Click(object sender, EventArgs e)
{
Oldcode.Text = "";
Newcode.Text = "";
Confirmcode.Text = "";
}
protected void btnBack_Click(object sender, EventArgs e)
{
Response.Redirect("choose.aspx");
} public static string FunStr(string str)
{
str = str.Replace("&", "&");
str = str.Replace("<", "<");
str = str.Replace(">", ">");
str = str.Replace("'", "''");
str = str.Replace("*", "");
str = str.Replace("\n", "<br/>");
str = str.Replace("\r\n", "<br/>");
str = str.Replace("select", "");
str = str.Replace("insert", "");
str = str.Replace("update", "");
str = str.Replace("delete", "");
str = str.Replace("create", "");
str = str.Replace("drop", "");
str = str.Replace("delcare", "");
str = str.Replace(" ", " "); str = str.Trim();
if (str.Trim().ToString() == "")
str = "无";
return str;
}
public string ToMD5(string str)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").Substring(8, 16);
}
}
未将对象引用设置到对象的实例。
说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 26: string newcode = FunStr(ToMD5(Newcode.Text.ToString()));
行 27: SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connstr"]);
行 28: SqlCommand selectCmd = new SqlCommand("select * from userinformation where name='" + Session["name"].ToString() + "'and code='" + code + "'");
行 29: try
行 30: {
源文件:d:\XXX版网站\changecode.aspx.cs 行:28 堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
changecode.btnSubmit_Click(Object sender, EventArgs e) in d:\XXX版网站\changecode.aspx.cs:28
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5087
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class changecode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.Session["memberlogin"] == null)
{
Response.Redirect("login.aspx");
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{ string code = FunStr(ToMD5(Oldcode.Text.ToString()));
string newcode = FunStr(ToMD5(Newcode.Text.ToString()));
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connstr"]);
SqlCommand selectCmd = new SqlCommand("select * from userinformation where name='" + Session["name"].ToString() + "'and code='" + code + "'",conn);
try
{
conn.Open();
SqlDataReader sdr = selectCmd.ExecuteReader();
if (sdr.Read())
{
Response.Write("change");
sdr.Close();
SqlCommand updateCmd = new SqlCommand("update userinformation set code='" + newcode + "' where name='" + Session["name"].ToString() + "'", conn);
int i = updateCmd.ExecuteNonQuery();
if (i > 0)
{
Response.Write("<script language=javascript>alert('成功修改密码!')</script>");
}
else
{
Response.Write("<script language=javascript>alert('修改密码失败!')</script>");
}
}
else
{
Response.Write("<script language=javascript>alert('您输入的密码错误,检查后重新输入!')</script>");
}
}
catch (System.Exception ee)
{
Response.Write("<script language=javascript>alert('" + ee.Message.ToString() + "')</script>");
}
finally
{
conn.Close();
}
}
protected void btnReset_Click(object sender, EventArgs e)
{
Oldcode.Text = "";
Newcode.Text = "";
Confirmcode.Text = "";
}
protected void btnBack_Click(object sender, EventArgs e)
{
Response.Redirect("choose.aspx");
} public static string FunStr(string str)
{
str = str.Replace("&", "&");
str = str.Replace("<", "<");
str = str.Replace(">", ">");
str = str.Replace("'", "''");
str = str.Replace("*", "");
str = str.Replace("\n", "<br/>");
str = str.Replace("\r\n", "<br/>");
str = str.Replace("select", "");
str = str.Replace("insert", "");
str = str.Replace("update", "");
str = str.Replace("delete", "");
str = str.Replace("create", "");
str = str.Replace("drop", "");
str = str.Replace("delcare", "");
str = str.Replace(" ", " "); str = str.Trim();
if (str.Trim().ToString() == "")
str = "无";
return str;
}
public string ToMD5(string str)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").Substring(8, 16);
}
}
未将对象引用设置到对象的实例。
说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 26: string newcode = FunStr(ToMD5(Newcode.Text.ToString()));
行 27: SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connstr"]);
行 28: SqlCommand selectCmd = new SqlCommand("select * from userinformation where name='" + Session["name"].ToString() + "'and code='" + code + "'");
行 29: try
行 30: {
源文件:d:\XXX版网站\changecode.aspx.cs 行:28 堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
changecode.btnSubmit_Click(Object sender, EventArgs e) in d:\XXX版网站\changecode.aspx.cs:28
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5087
解决方案 »
- 关于参数传递问题 在线等,今天结贴。急急急!!!
- sql 存储过程,,号问题啊,急....
- 给点提示~!
- vb代码转换为c#请教?
- Response.Write("<script language='javascript'>alert('completed!');</script>");为什么老是不执行呢?
- 紧急,我的URL正则表达式怎么错了…………
- @@@@@@@@@急急急急急急急急急急急急数@@@@据绑定控件Repeater中如何在后台或前台获取每一页有被选中的复选框
- 求一个效率高一点的分页方法
- 用户控件
- 如何把yyyy_mm_dd 00:00:00改为yyyymmdd
- 保存界面dataset
- 请赐教:如何实现业务功能模块化的网站
请问这个需要修改哪里,是要把name给改成memberlogin吗?因为我前台设计是不需要输入用户名的,所以要根据session里面的信息来寻找要修改的用户资料。。
我需要把session中的信息提取出来,但是不知道怎么去修改了,烦请帮忙解决一下哈~
又或者你把 “name”写错了?
另 会不会你只试了一次?由于登录时间过长Session超时,会被自动清空,从而取到null我在瞎猜了确认下有没赋值吧
避免的方法就是用引用变量之前先判断一下是否为Null
if(Session["name"]!=null)
{
//use Session["name"]
}
我想你的Session["name"]是不是没有赋值呢,还是丢失了啊,Session这个是很容易丢失的。
Session["memberlogin"] 这里存的是什么,你所说的 根据session里面的信息来寻找要修改的用户资料 应该把Session["memberlogin"]的值取出来加以分析处理得到你要的用户信息,,,
把28行这段代码改为 SqlCommand selectCmd = new SqlCommand("select * from userinformation where name='" + Session["name"]==null?"":Session["name"].ToString() + "'and code='" + code + "'");
把这段sql语句的拼写放在外面,用stringbulider,拼写时判断。string sqlstr="select * from userinformation where name="
if(session["name"]!=null)
{
sqlstr.append(session["name"].tostring());
}
注意所有的参数拼加都判断下
为什么加上这个之后出来一个错误“当前上下文不存在名称sqlstr”