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

令人头疼的问题,注册进去的用户名密码登陆不进去,在数据库直接插入的数据登陆就可以!!为什么啊

数据库SQL SERVER 2000

注册信息放在教师表,利用数据库的触发器完成了在用户表里的数据插入,
例如我注册ID“111”PWD“111”用户级别“teacher”,完成注册,打开teacher表和user表存在以上数据
返回登陆页面登陆,登陆不进去···页面不报错,就像刷新了一次页面
于是我打开企业管理器,直接ID“111”PWD“111”用户级别“teacher”,填到USER表里,竟然就登陆进去了!!
代码肯定有很多不可取之处,但是我比菜鸟还菜,只能做到这种程度了···

注册的代码

public partial class control_register : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
          
        }

    }

    private void studentadd()
    {
       
            string conn = "server=PC-201005131654;database=Northwind;user id=sa;pwd=123";
            using (SqlConnection cn = new SqlConnection(conn))
            {

                cn.Open();
                string strsql ="insert into tea_table(tea_id,tea_name,tea_sex,tea_level,tea_telephone,tea_speciality,tea_password,tea_memo) values('" + tbID.Text + "','" + tbNAME.Text + "','"+Sexid.SelectedItem.Text +"','" +ddlLEVEL.SelectedValue+ "','" + tbTELEPHONE.Text + "','" + tbSPECIALITY.Text+ "','" + tbPASSWORD.Text + "','" + tbMEMO.Text + "')";
                SqlCommand cmd = new SqlCommand(strsql, cn);
                SqlDataReader rd = cmd.ExecuteReader(CommandBehavior.CloseConnection);

             


            
        }
    }
 protected void btSUMBIT_Click(object sender, EventArgs e)
    {
        studentadd();
    }


登陆代码:
 protected void btLOGIN_Click(object sender, EventArgs e)
    {
        string conn = "server=PC-201005131654;database=Northwind;user id=sa;pwd=123";
        //SqlConnection cn = new SqlConnection(conn);

        using (SqlConnection cn = new SqlConnection(conn))
        {
            cn.Open();
            string strsql = "select user_password,user_level from user_table where user_id='" + tbID.Text + "'";
            SqlCommand cmd = new SqlCommand(strsql, cn);
            SqlDataReader rd = cmd.ExecuteReader();            while (rd.Read())
            {
                if (rd.GetValue(0).ToString() == tbPASSWORD.Text)

                {
                    string str = rd.GetValue(1).ToString();
                    string str1 = ddlLEVEL.SelectedValue;
                    if (str == str1)                    
{
                        switch (str)
                        {
                            case "ymanager":
                                Response.Redirect("~/web/YSTUDY_MANAGER.aspx");
                                break;
                            case "supermaster":
                                Response.Redirect("~/web/SUPER_MASTER.aspx");
                                break;
                            case "teacher":
                                Response.Redirect("~/web/TEACHER_PAGE.aspx");
                                break;

                        }
                    }

触发器:
CREATE TRIGGER [tea_tableinsert] ON dbo.tea_table 
FOR INSERT
AS
insert  user_table
select  tea_id,tea_level,tea_password
from inserted

我用注册插入的用户信息登陆
在红字处设置了断点,if (rd.GetValue(0).ToString() == tbPASSWORD.Text),tbPASSWORD.Text的值为114,但是if里面的语句不执行!
用直接填入数据库的信息输入语句照常执行······
这都因为什么,
请高手指点一二!!最好具体点···如果换代码··能写具体些,我实在很菜的···

--------------------编程问答-------------------- rd.GetValue(0).ToString() 这个值是多少啊,也是114吗 --------------------编程问答-------------------- 关注中………… --------------------编程问答--------------------
 string strsql = "select user_password,user_level from user_table where user_id='" + tbID.Text + "'";

你登陆前就知道用户ID了?
还有
注册处建议
将 SqlDataReader rd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
换成 cmd.ExecuteNonQuery();
cn.close(); 

--------------------编程问答--------------------
引用 1 楼 mck477 的回复:
rd.GetValue(0).ToString() 这个值是多少啊,也是114吗


rd.GetValue(0).ToString() 的值是NULL,登陆成功时他的值也是NULL··· --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
 string strsql = "select user_password,user_level from user_table where user_id='" + tbID.Text + "'";

你登陆前就知道用户ID了?
还有
注册处建议
将 SqlDataReader rd = cmd.ExecuteReader(CommandBehavior.CloseConnectio……


恩?登陆前不知道用户ID怎么登陆啊···你的意思是····? --------------------编程问答--------------------
引用 4 楼 guotingru 的回复:
引用 1 楼 mck477 的回复:
rd.GetValue(0).ToString() 这个值是多少啊,也是114吗


rd.GetValue(0).ToString() 的值是NULL,登陆成功时他的值也是NULL···

下拉框的值用Text来取 --------------------编程问答--------------------
引用 6 楼 mck477 的回复:
引用 4 楼 guotingru 的回复:
引用 1 楼 mck477 的回复:
rd.GetValue(0).ToString() 这个值是多少啊,也是114吗


rd.GetValue(0).ToString() 的值是NULL,登陆成功时他的值也是NULL···

下拉框的值用Text来取


错误是在这里吗?用TEXT来取的话输入用户级别不规范等会出现很多麻烦···不如用下拉框选择直接! --------------------编程问答-------------------- 跟踪一下值。 --------------------编程问答--------------------
引用 7 楼 guotingru 的回复:
引用 6 楼 mck477 的回复:
引用 4 楼 guotingru 的回复:
引用 1 楼 mck477 的回复:
rd.GetValue(0).ToString() 这个值是多少啊,也是114吗


rd.GetValue(0).ToString() 的值是NULL,登陆成功时他的值也是NULL···

下拉框的值用Text来取


错误是在这里吗?用TEXT来取的话输……

用下列框选择值,但是获取值用Text,不要用SelectedValue --------------------编程问答--------------------
引用 5 楼 guotingru 的回复:
引用 3 楼 q107770540 的回复:
string strsql = "select user_password,user_level from user_table where user_id='" + tbID.Text + "'";

你登陆前就知道用户ID了?
还有
注册处建议
将 SqlDataReader rd = cmd.ExecuteReader(Comman……


我的意思是:

[Quote=引用 5 楼 guotingru 的回复:]

引用 3 楼 q107770540 的回复:
string strsql = "select * from user_table where user_name='" +登陆用户输入的用户名 + "'"; --------------------编程问答-------------------- rd.GetValue(0).ToString() 换成 reader["user_password"].ToString()看看能不能进行IF判断 --------------------编程问答-------------------- 是rd["user_password"].ToString()没看清楚你的reader命名 --------------------编程问答-------------------- 看清楚了 --------------------编程问答-------------------- 数据库的字段值改成VARCHAR。 --------------------编程问答-------------------- 看关键点。
1.你执行sql语句时,看下sql语句是否正确
2.执行完sql后,查看相应的表中是否有数据
3.登录的密码有加密机制吗 --------------------编程问答-------------------- 跟踪一下,执行sql语句 --------------------编程问答--------------------
引用 11 楼 xiaoyu0149 的回复:
rd.GetValue(0).ToString() 换成 reader["user_password"].ToString()看看能不能进行IF判断

不能判断···之前我已经给出了设置断点不能执行IF语句 --------------------编程问答--------------------
引用 15 楼 whslovexyp 的回复:
看关键点。
1.你执行sql语句时,看下sql语句是否正确
2.执行完sql后,查看相应的表中是否有数据
3.登录的密码有加密机制吗

SQL语句正确,密码没有加密 --------------------编程问答-------------------- if语句是不能执行 还是 条件判断失败 ? --------------------编程问答--------------------
引用 19 楼 luochanghua 的回复:
if语句是不能执行 还是 条件判断失败 ?

不能执行
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,