繁体   English   中英

检查数据库是否在C#文本框中存在用户名

[英]Check database if username exist in c# textbox

我计划根据用户从文本框中输入的内容来检查用户名,并计划在放置现有用户名后立即显示错误消息。 现在我有这段代码。 我没有遇到错误,但是无法正常工作。 我在这里想念什么?

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());
        }
    }

    protected void txtUser_TextChanged(object sender, EventArgs e)
    {
        if (Page.IsPostBack == true)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from UserDAta where Username='" + txtUser.Text + "'", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            Imagemessage.Visible = true;
            lblusercheck.Visible = true;
            Imagemessage.ImageUrl = "NotAvailable.jpg";
            lblusercheck.Text = "Username already exists.";
        }
        else
        {
            Imagemessage.Visible = true;
            lblusercheck.Visible = true;
            Imagemessage.ImageUrl = "Available.gif";
            lblusercheck.Text = "You can choose this username.";
        }
    }
    }  

任何一次按键都不会调用TextChange Event。 您应该做的是使用javascript在客户端功能keyup中创建到服务器的回发(例如,使用__doPostBack)

另外,这将是回发,您不应在Handler中检查!isPostBack。

更新:

Markup:
<asp:TextBox runat="server" ID="txt" onkeyup="check(this);" />


Javascript
function check(txt) {

    __doPostBack('Control to Update', 'Filter--'+txt.value);
}

codebehind:
form_load:
parameter = Request["__EVENTARGUMENT"];
if (parameter != null && parameter.startsWith("Filter--"))
{
    //Do your check here.
}

我不喜欢这种编码,因为它太乱了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM