错误,在检查用户名和电子邮件时数据库中已经存在或asp.net c#中不存在

问题描述 投票:-1回答:2

这是我的代码,当我单击注册按钮时,即使数据库中不存在错误消息,也向我显示“电子邮件已注册”和“用户名已被占用”的两个错误消息。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();
        }
        con.Open();
    }       
    protected void fname_TextChanged(object sender, EventArgs e)
    {
        CultureInfo cI = Thread.CurrentThread.CurrentCulture;
        TextInfo textInfo = cI.TextInfo;
        fname.Text = textInfo.ToTitleCase(fname.Text);
    }
    protected void lname_TextChanged(object sender, EventArgs e)
    {
        CultureInfo cI = Thread.CurrentThread.CurrentCulture;
        TextInfo textInfo = cI.TextInfo;
        lname.Text = textInfo.ToTitleCase(lname.Text);
    }
    protected void register_Click(object sender, EventArgs e)
    {
        if (checkemail() == false && checkuname() == false)
        {
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "insert into Users values('" + fname.Text + "','" + lname.Text + "','" + email.Text + "','" + uname.Text + "','" + password.Text + "')";
            cmd.ExecuteNonQuery();
        }
        if(checkemail() == true)
        {
            chkmail.Visible = true;
            mailerror.Text = "Email Address already Registered";
        }
        if(checkuname() == true)
        {
            chkuname.Visible = true;
            unameerror.Text = "Username is taken!";
        }

    }
    private Boolean checkemail()
    {
        Boolean emailavailable = false;
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select * from Users where emailId='" + email.Text + "'";
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        DataSet ds = new DataSet();
        da.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            emailavailable = true;
        }
        return emailavailable;
    }
    private Boolean checkuname()
    {
        Boolean unameavailable = false;
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select * from Users where username='" + uname.Text + "'";
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        DataSet ds = new DataSet();
        da.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            unameavailable = true;
        }
        return unameavailable;
    }

在这种情况下,我想要的实际输出是,如果给出了现有电子邮件,则应该给出电子邮件错误消息,如果给出了现有用户名,则应该给出用户名错误消息,如果数据库中同时存在这两种情况,则都应显示错误。请帮助提供此代码。

这是我的代码,当我单击注册按钮时,即使数据库中不存在错误消息,也向我显示“电子邮件已注册”和“用户名已被占用”的两个错误消息。 ...

c# asp.net c#-4.0
2个回答
0
投票

您可以通过以下方式简化逻辑:


0
投票

我会考虑将代码更改为类似于下面的示例:

© www.soinside.com 2019 - 2024. All rights reserved.