学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 12 12
发新话题
打印

求助!我的代码错在哪里?

求助!我的代码错在哪里?

我写了个登陆后修改密码的代码,可是修改总是不成功,麻烦朋友们帮忙看看,谢谢!
数据库表是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();
     }

       }
}
问题不清楚的我还可以在补充,麻烦大家帮忙看下,我是新手,实在是找不出问题在哪了!谢谢

TOP

int resultrow=cm.ExecuteNonQuery(); 问题应该在这,我看你的int resultrow也没有用嘛。
如果resultrow没有用的话直接改成
cm.ExecuteNonQuery();
如果你用到了的话,用convent转换成int型的……
积霜累寒始成冰,唯独河冰冰中冰。

TOP

版主 ,还是不行,修改的密码添补到数据库表里去,是不是还有其他的原因??

TOP

这个肯定是你的try的时候出现了错误,所以跳出了try……
你可以将try先注释掉,看看到底是什么错误……
还有你的UserId字段是什么?是用户名吗?要是不是的话你where的时候却是where他们两相等了……
积霜累寒始成冰,唯独河冰冰中冰。

TOP

我把try注释掉了,在运行,还是和原来一样,运行的时候没有错误,就是无法把修改的密码添加到数据库表中。
UserId字段是用户名

TOP

回复 1# 的帖子

你用设个断点试试吧!

TOP

你注释掉了try运行不出错的话,那就是where语句后面的条件不成立……
也就是说UserId='"+username.Trim()+"'这句不成立
积霜累寒始成冰,唯独河冰冰中冰。

TOP

{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"    
这是我设断点,在自动窗口显示的内容,是什么意识阿?我才开始学,看不懂。是不是连接不上数据库?

TOP

1.检查数据库链接string sqlConnString="server=.;Uid=sa;Pwd=sa;Database=zra".ToString();
是否有问题;
2.SqlCommand cm=new SqlCommand("sql",conn);
这句是错的,new SqlCommand("sql",conn);sql是不加引号的,引用上面定义的变量sql。

[ 本帖最后由 hoya 于 2008-5-16 09:24 编辑 ]
妈的...一天能卖一颗就很不错了...

TOP

这句是错的,new SqlCommand("sql",conn);sql是不加引号的,引用上面定义的变量sql

就是这个错误!!
终于解决了~

谢谢大家了!~~

TOP

 12 12
发新话题