标题:ASP.NET初学新手请教一个问题
只看楼主
cjslove
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-1-21
 问题点数:0 回复次数:5 
ASP.NET初学新手请教一个问题
我是初学者,在做一个小系统的时候,碰到一个问题:
用户修改密码时,需要输入旧密码,只有旧密码对了才能修改新的密码,但问题是无论输入什么旧密码都能验证通过,
我检查过代码貌似没发现哪错了,请大神能指点迷津,谢谢!


以下代码为DB类中的一个方法UserPassChange(),供其他页面调用
程序代码:
//用户更改密码
    public int UserPassChange(string userno,string oldpwd,string newpwd)
    {
        SqlConnection conn = Getcon();   //  数据库调用没有问题
        conn.Open();
        string sqlstr1 = "select * from UserInfo where UserNo='"+userno+"' and UserPwd='"+oldpwd+"'";
        string sqlstr = "update UserInfo set UserPwd='"+newpwd+"' where UserNo='"+userno+"'";
        SqlCommand cmd1 = new SqlCommand(sqlstr1,conn);
        SqlCommand cmd = new SqlCommand(sqlstr,conn);
        if (cmd1.ExecuteNonQuery() != 0)     
        {
            int i;
            if (cmd.ExecuteNonQuery() != 0)
            {
               i=1;    //密码修改成功
            }
            else
            {
               i= -1;   //密码修改失败
            }
            return i;
            
        }
        else
        {
            return 0;  // 旧密码不正确,不能修改密码
        }
        
    }


以下代码为实际调用
程序代码:
protected void Button1_Click(object sender, EventArgs e)
    {
        string oldpwd = txt_oldpwd.Text;
        string newpwd = txt_newpwd.Text;
        DB db= new DB();

         switch (db.UserPassChange(userno,oldpwd,newpwd))
        {
            case 0:
            Response.Write("<script>alert('旧密码不正确,请重新输入');</script>");
            break;
            
            case 1:
            Response.Write("<script>alert('密码修改成功');</script>");
            break;

            case -1:
            Response.Write("<script>alert('密码修改失败');</script>");
            break;
        }
         
        
    }
搜索更多相关主题的帖子: 修改密码 color 用户 
2013-08-16 17:16
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
public int UserPassChange(string userno,string oldpwd,string newpwd)
    {
        SqlConnection conn = Getcon();   //  数据库调用没有问题
        conn.Open();
        string sqlstr1 = "select * from UserInfo where UserNo='"+userno+"' and UserPwd='"+oldpwd+"'";
        string sqlstr = "update UserInfo set UserPwd='"+newpwd+"' where UserNo='"+userno+"' and UserPwd='"+oldpwd+"'";
        SqlCommand cmd1 = new SqlCommand(sqlstr1,conn);
        SqlCommand cmd = new SqlCommand(sqlstr,conn);
        if (cmd1.ExecuteNonQuery() != 0)     
        {
            int i;
            if (cmd.ExecuteNonQuery() != 0)
            {
               i=1;    //密码修改成功
            }
            else
            {
               i= -1;   //密码修改失败
            }
            return i;
            
        }
        else
        {
            return 0;  // 旧密码不正确,不能修改密码
        }
        
    }
2013-08-26 11:25
Aviva_Wang
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:苏州
等 级:贵宾
威 望:26
帖 子:701
专家分:2382
注 册:2013-3-12
得分:0 
执行错误,明明是查询的操作还用cmd1.ExecuteNonQuery() !!!!!!

asp
2013-08-28 08:08
RKlongway
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-29
得分:0 
冒个泡
2013-08-29 19:55
shangsharon
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
威 望:7
帖 子:221
专家分:1261
注 册:2012-3-25
得分:0 
3楼正解
cmd1应该是执行ExecuteReader这个方法
2013-09-11 14:51
party620
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:696
专家分:2521
注 册:2013-1-31
得分:0 
你可以把
string sqlstr1 = "select * from UserInfo where UserNo='"+userno+"' and UserPwd='"+oldpwd+"'";
改为
string sqlstr1 = "select count(1) from UserInfo where UserNo='"+userno+"' and UserPwd='"+oldpwd+"'";
 if (cmd1.ExecuteNonQuery() != 0) 
改为
 if (convert.toInt32(cmd1.ExecuteScale()) != 0) 



2013-09-11 15:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419223-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.124770 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved