当前位置:编程学习 > C#/ASP.NET >>

.net数据库连接出问题

我做一个密码重置页面 代码如下
protected void Button1_Click(object sender, EventArgs e) 
{ string usetxt = this.TextBox1.Text;//用户名 
string pass = this.TextBox2.Text;//密码框 
string cpass = this.TextBox3.Text;//确认密码框 
if (usetxt == "") 

this.Response.Write("<script>alert('用户名不能为空!');</script>");
return; 

if (pass != cpass) 

this.Response.Write("<script>alert('两次输入的密码不一致!');</script>"); 
return; 

else 
{ //获取Web.config中的连接字符串 string sqlConnString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); //连接数据库 
SqlConnection conn = new SqlConnection("server=192.168.1.101;uid=sa;pwd=88;database=yhgl;"); 
SqlCommand cm = new SqlCommand("proc_usermsg_add", conn);//使用存储过程
cm.CommandType = CommandType.StoredProcedure; 
cm.Parameters.Add("@pro_ID", usetxt); 
cm.Parameters.Add("@pro_pwd", FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5"));//MD5加密
conn.Open(); 
try 

int resultrow = cm.ExecuteNonQuery(); //返回数据库被影响的行 conn.Close(); 
this.Response.Write("<script>alert('操作已成功!');</script>");

catch 

conn.Close(); 


}
调试时点击确定按钮后时说 string sqlConnString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); 未将对象引用设置到对象的实例。 .NET String 密码 --------------------编程问答-------------------- 是不是配置文件的位置放的不对?你看你得配置文件在那放着 --------------------编程问答-------------------- 报的错 已经很明显咯  楼主 ConfigurationManager.AppSettings["ConnectionString"]这个你断点下是不是空喔! --------------------编程问答-------------------- ConfigurationManager.AppSettings["ConnectionString"]为null了。
你的web.config中的appsetting中要有ConnectionString --------------------编程问答-------------------- 那怎么查断点呢

引用 2 楼 sibiyellow 的回复:
报的错 已经很明显咯  楼主 ConfigurationManager.AppSettings["ConnectionString"]这个你断点下是不是空喔!
 恩 怎么查呢 再如何修改这代码? --------------------编程问答-------------------- <appSettings>

<add key="ConnectionString" value="...."/>
</appSettings> --------------------编程问答-------------------- 3楼 已经说了 你段点下 应该是ConfigurationManager.AppSettings["ConnectionString"]
你可以在在web.config 的appsetting节点下面添加<add key="ConnectionString" value="此处为连接数据库字符串"/> --------------------编程问答-------------------- 顶一个
--------------------编程问答--------------------
引用 4 楼 u010581260 的回复:
那怎么查断点呢

Quote: 引用 2 楼 sibiyellow 的回复:

报的错 已经很明显咯  楼主 ConfigurationManager.AppSettings["ConnectionString"]这个你断点下是不是空喔!
 恩 怎么查呢 再如何修改这代码?


是看web.config是否有相关节点,不是代码,发你的web.config上来看看 --------------------编程问答-------------------- sqlConnString 没有用到啊
  string _connectionString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;  获取连接字符串,
conm.Open();打开数据库  

conn 是要释放的最好加上using不然调试几次就不好调了。
--------------------编程问答--------------------

输入完三个框点击确定后 密码和确认密码两个文本框输入的字没有了 变成了这样

--------------------编程问答-------------------- 我又查了下数据库,密码没有改变 --------------------编程问答-------------------- 前一个问题解决了,又面临这个问题 --------------------编程问答-------------------- 为了安全起见,密码没有保存在ViewState里。因此会在post back后丢失。 --------------------编程问答--------------------
引用 13 楼 findcaiyzh 的回复:
为了安全起见,密码没有保存在ViewState里。因此会在post back后丢失。

那这段代码应该怎么修改呢 --------------------编程问答-------------------- 如果你需要保持password,看看下面两篇文章

http://www.codeproject.com/Articles/18927/How-to-safely-keep-a-password-field-during-postbac

http://www.codeproject.com/Articles/18087/ASP-NET-Password-TextBox --------------------编程问答-------------------- 还有另外一种方法:
As a security feature, ASP.NET tries to disallow you from sending the password value back to the client. If you're okay with the security issues (i.e. it's either not really secure information or you're sure that the connection is secure), you can manually set the "value" attribute of the control, rather than using its Text property. It might look something like this:

this.PINPad.Attributes.Add("value", this.PINPad.Text);

来自:
http://stackoverflow.com/questions/2169568/asptextbox-value-disappears-in-postback-only-when-password --------------------编程问答-------------------- 1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空 --------------------编程问答--------------------
引用 15 楼 findcaiyzh 的回复:
如果你需要保持password,看看下面两篇文章

http://www.codeproject.com/Articles/18927/How-to-safely-keep-a-password-field-during-postbac

http://www.codeproject.com/Articles/18087/ASP-NET-Password-TextBox

我是新手,有些东西读不懂 --------------------编程问答--------------------
引用 17 楼 dong3580 的回复:
1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空

第一个问题解决了,帮我解决第二个问题,如10楼图中的问题 --------------------编程问答--------------------
引用 19 楼 u010581260 的回复:
Quote: 引用 17 楼 dong3580 的回复:

1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空

第一个问题解决了,帮我解决第二个问题,如10楼图中的问题

LZ第一个问题怎么解决的撒,说说到底哪儿的问题诶.
第二个问题,你的点击中我看到这个代码:


this.Response.Write("<script>alert('操作已成功!');</script>");


你的是web程序?要是web的话是不是load时间中写了ispostback 了呢?
如果是winform的话还是用messagebox吧, --------------------编程问答--------------------
引用 20 楼 dong3580 的回复:
Quote: 引用 19 楼 u010581260 的回复:

Quote: 引用 17 楼 dong3580 的回复:

1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空

第一个问题解决了,帮我解决第二个问题,如10楼图中的问题

LZ第一个问题怎么解决的撒,说说到底哪儿的问题诶.
第二个问题,你的点击中我看到这个代码:


this.Response.Write("<script>alert('操作已成功!');</script>");


你的是web程序?要是web的话是不是load时间中写了ispostback 了呢?
如果是winform的话还是用messagebox吧,

是aspx文件 好像没加 --------------------编程问答--------------------
引用 21 楼 u010581260 的回复:
Quote: 引用 20 楼 dong3580 的回复:

Quote: 引用 19 楼 u010581260 的回复:

Quote: 引用 17 楼 dong3580 的回复:

1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空

第一个问题解决了,帮我解决第二个问题,如10楼图中的问题

LZ第一个问题怎么解决的撒,说说到底哪儿的问题诶.
第二个问题,你的点击中我看到这个代码:


this.Response.Write("<script>alert('操作已成功!');</script>");


你的是web程序?要是web的话是不是load时间中写了ispostback 了呢?
如果是winform的话还是用messagebox吧,

是aspx文件 好像没加

那怎么改 --------------------编程问答--------------------
引用 22 楼 u010581260 的回复:
Quote: 引用 21 楼 u010581260 的回复:

Quote: 引用 20 楼 dong3580 的回复:

Quote: 引用 19 楼 u010581260 的回复:

Quote: 引用 17 楼 dong3580 的回复:

1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空

第一个问题解决了,帮我解决第二个问题,如10楼图中的问题

LZ第一个问题怎么解决的撒,说说到底哪儿的问题诶.
第二个问题,你的点击中我看到这个代码:


this.Response.Write("<script>alert('操作已成功!');</script>");


你的是web程序?要是web的话是不是load时间中写了ispostback 了呢?
如果是winform的话还是用messagebox吧,

是aspx文件 好像没加

那怎么改


表述清楚点,aspx文件没加?写网页不加aspx文件怎么写呀?...
没懂你的意思 --------------------编程问答-------------------- 楼主应该是学生   估计是在做毕业设计的吧 --------------------编程问答--------------------
引用 24 楼 rabow_ 的回复:
楼主应该是学生   估计是在做毕业设计的吧

是的 --------------------编程问答--------------------
引用 23 楼 dong3580 的回复:
Quote: 引用 22 楼 u010581260 的回复:

Quote: 引用 21 楼 u010581260 的回复:

Quote: 引用 20 楼 dong3580 的回复:

Quote: 引用 19 楼 u010581260 的回复:

Quote: 引用 17 楼 dong3580 的回复:

1.配置文件里面看看ConnectionString,
2.断点后台的ConnectionString看看是不是为空

第一个问题解决了,帮我解决第二个问题,如10楼图中的问题

LZ第一个问题怎么解决的撒,说说到底哪儿的问题诶.
第二个问题,你的点击中我看到这个代码:


this.Response.Write("<script>alert('操作已成功!');</script>");


你的是web程序?要是web的话是不是load时间中写了ispostback 了呢?
如果是winform的话还是用messagebox吧,

是aspx文件 好像没加

那怎么改


表述清楚点,aspx文件没加?写网页不加aspx文件怎么写呀?...
没懂你的意思


我意思说我现在用的是aspx文件 不是form窗体。你前面说的什么"load时间中写了ispostback 了"这句话我不懂 --------------------编程问答--------------------
引用 25 楼 u010581260 的回复:
Quote: 引用 24 楼 rabow_ 的回复:

楼主应该是学生   估计是在做毕业设计的吧

是的
 如10楼图中我说的那个问题怎么解决啊 --------------------编程问答-------------------- 你点确定修改密码,结果密码没有改掉,没有弹出操作成功的框吗?调试看看,进去看断点进哪里了,先看断点是否进了那个else,如果进去执行了sql语句,那就可能是id错误了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,