用户注册时用户名检查不起作用 -asp.net

Username check is not working when user registers -asp.net

我想检查用户名是否已存在于数据库中,如果存在,错误消息将提示说 "username already exist"。现在我有了这段代码,但它不起作用。程序仍然接受用户名,即使它是从数据库中复制的。有人可以帮我吗?这是我的全部注册码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
            conn.Open();
            string checkuser = "select count(*) from UserData where Username = '" + txtUser.Text + "'";
            SqlCommand scm = new SqlCommand(checkuser, conn);
            int temp = Convert.ToInt32(scm.ExecuteScalar().ToString());
            if (temp == 1) // check if user already exist.
            {
                Response.Write("User already existing");
            }
            conn.Close();
        }
    }
    protected void btn_Registration_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
            conn.Open();
            string insertQuery = "insert into UserData(Username,Firstname,Lastname,Email,Password,CustomerType,DeliveryAddress,Zip,ContactNumber)values(@Username,@Firstname,@Lastname,@Email,@Password,@CustomerType,@DeliveryAddress,@Zip,@ContactNumber)";
            SqlCommand scm = new SqlCommand(insertQuery, conn);
            scm.Parameters.AddWithValue("@Username", txtUser.Text);
            scm.Parameters.AddWithValue("@Firstname", txtFN.Text);
            scm.Parameters.AddWithValue("@Lastname", txtLN.Text);
            scm.Parameters.AddWithValue("@Email", txtEmail.Text);
            scm.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text));
            scm.Parameters.AddWithValue("@CustomerType", RadioButtonList1.SelectedItem.ToString());
            scm.Parameters.AddWithValue("@DeliveryAddress", txtAddress.Text);
            scm.Parameters.AddWithValue("@Zip", txtZip.Text);
            scm.Parameters.AddWithValue("@ContactNumber", txtContact.Text);

            scm.ExecuteNonQuery();
            Session["Contact"]= txtContact.Text;
            Session["Email"] = txtEmail.Text;
            Session["DeliveryAddress"] = txtAddress.Text;
            label_register_success.Text = ("Registration Successful!");
            //Response.Redirect("Home.aspx");
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.ToString());
        }
    }

您验证 Page_Load 上的数据?我想,你可以选择这些解决方案

  1. 您必须在 btn_Registration_Click 中执行此操作,然后再插入 数据,或
  2. 也许,你可以修改它在sp中做,如果数据是通过它抛出消息 复制并在那里进行检查。

应该是这样的(根据方案一)

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
        }
    }
    protected void btn_Registration_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
            conn.Open();
            string checkuser = "select count(*) from UserData where Username = '" + txtUser.Text + "'";
            SqlCommand scm = new SqlCommand(checkuser, conn);
            int temp = Convert.ToInt32(scm.ExecuteScalar().ToString());
            if (temp > 0) // check if user already exist.
            {
                Response.Write("User already existing");
            }
            else
            {
                string insertQuery = "insert into UserData(Username,Firstname,Lastname,Email,Password,CustomerType,DeliveryAddress,Zip,ContactNumber)values(@Username,@Firstname,@Lastname,@Email,@Password,@CustomerType,@DeliveryAddress,@Zip,@ContactNumber)";
                scm = new SqlCommand(insertQuery, conn);
                scm.Parameters.AddWithValue("@Username", txtUser.Text);
                scm.Parameters.AddWithValue("@Firstname", txtFN.Text);
                scm.Parameters.AddWithValue("@Lastname", txtLN.Text);
                scm.Parameters.AddWithValue("@Email", txtEmail.Text);
                scm.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text));
                scm.Parameters.AddWithValue("@CustomerType", RadioButtonList1.SelectedItem.ToString());
                scm.Parameters.AddWithValue("@DeliveryAddress", txtAddress.Text);
                scm.Parameters.AddWithValue("@Zip", txtZip.Text);
                scm.Parameters.AddWithValue("@ContactNumber", txtContact.Text);

                scm.ExecuteNonQuery();
                Session["Contact"]= txtContact.Text;
                Session["Email"] = txtEmail.Text;
                Session["DeliveryAddress"] = txtAddress.Text;
                label_register_success.Text = ("Registration Successful!");
                //Response.Redirect("Home.aspx");
            }
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.ToString());
        }
    }