求助!我的代码错在哪里?
我写了个登陆后修改密码的代码,可是修改总是不成功,麻烦朋友们帮忙看看,谢谢!数据库表是putongyonghu,用户名是UserId,密码是pwd.
下面的代码对验证旧密码是否正确和新密码是否重复,都能实现,就是更改不了数据库表中用户密码!
string username=Session["UserId"].ToString().Trim();//取得用户名
string password=Session["pwd"].ToString().Trim();//取得旧密码
string Pwd=this.TBpass.Text;//旧密码框
string pass=this.TBnewpass.Text;//密码框
string cpass=this.TBnewpass2.Text;//确认密码框
if(password.Trim()!=this.TBpass.Text)
{
this.Response.Write("<script>alert('旧密码不正确!');</script>");
return;
}
else
{
if(pass != cpass)
{
this.Response.Write("<script>alert('两次输入的密码不一致!');</script>");
return;
}
else
{
string sqlConnString="server=.;Uid=sa;Pwd=sa;Database=zra".ToString();
SqlConnection conn=new SqlConnection(sqlConnString);
string sql="update putongyonghu set pwd='"+this.TBnewpass.Text+"' where UserId='"+username.Trim()+"'";
SqlCommand cm=new SqlCommand("sql",conn);
conn.Open();
try
{
int resultrow=cm.ExecuteNonQuery();
conn.Close();
this.Response.Write("<script>alert('操作已成功!');</script>");
}
catch
{
conn.Close();
}
}
}
问题不清楚的我还可以在补充,麻烦大家帮忙看下,我是新手,实在是找不出问题在哪了!谢谢
如果resultrow没有用的话直接改成
cm.ExecuteNonQuery();
如果你用到了的话,用convent转换成int型的…… 版主 ,还是不行,修改的密码添补到数据库表里去,是不是还有其他的原因?? 这个肯定是你的try的时候出现了错误,所以跳出了try……
你可以将try先注释掉,看看到底是什么错误……
还有你的UserId字段是什么?是用户名吗?要是不是的话你where的时候却是where他们两相等了…… 我把try注释掉了,在运行,还是和原来一样,运行的时候没有错误,就是无法把修改的密码添加到数据库表中。
UserId字段是用户名
回复 1# 的帖子
你用设个断点试试吧! 你注释掉了try运行不出错的话,那就是where语句后面的条件不成立……也就是说UserId='"+username.Trim()+"'这句不成立 {System.Data.SqlClient.SqlConnection}
System.ComponentModel.Component: {System.Data.SqlClient.SqlConnection}
_constr: {System.Data.SqlClient.SqlConnectionString}
_fIsClosing: false
_hidePasswordPwd: false
_infoMessageEventHandler: <未定义的值>
_internalConnection: <未定义的值>
_localTransaction: <未定义的值>
_objectState: Closed
_preparedCommands: <未定义的值>
_reader: <未定义的值>
_sdc: <未定义的值>
_SqlClientPermission: <未定义的值>
_stateChangeEventHandler: <未定义的值>
ConnectionString "server=.;Uid=sa;Pwd=sa;Database=zra"
ConnectionTimeout: 15
Database: "zra"
DataSource: .
IsClosing: false
IsShiloh: <错误: 发生 {System.NullReferenceException} 类型的异常>
LocalTransaction: <未定义的值>
PacketSize: 8192
Parser: <未定义的值>
Reader: <未定义的值>
ServerVersion: <错误: 发生 {System.InvalidOperationException} 类型的异常>
SqlClientPermission: {System.Data.SqlClient.SqlClientPermission}
State: Closed
WorkstationId "ZRA-35C1CA64B76"
这是我设断点,在自动窗口显示的内容,是什么意识阿?我才开始学,看不懂。是不是连接不上数据库? 1.检查数据库链接string sqlConnString="server=.;Uid=sa;Pwd=sa;Database=zra".ToString();
是否有问题;
2.SqlCommand cm=new SqlCommand("sql",conn);
这句是错的,new SqlCommand("sql",conn);sql是不加引号的,引用上面定义的变量sql。
[[it] 本帖最后由 hoya 于 2008-5-16 09:24 编辑 [/it]] 这句是错的,new SqlCommand("sql",conn);sql是不加引号的,引用上面定义的变量sql
就是这个错误!!
终于解决了~
谢谢大家了!~~[tk01] [tk02] 彻底服了,你验证旧密码直接一个ajax去数据库取数据然后验证输入的是否一致就好了,两次输入密码的直接拿JS验证不就完事了,何必都提交到服务器去验证呢。。。。
页:
[1]
