C# 售票系统:比较两个字符串

C# 售票系统:比较两个字符串,c#,asp.net,ado.net,C#,Asp.net,Ado.net,好的,我基本上是想验证输入的用户名是否重复,但是while循环中的字符串比较有问题 我尝试使用临时标签来验证值是否被正确提取 protected void BtnConfirmSignup_Click(object sender, EventArgs e) { int f = 0; SqlConnection con = new SqlConnection("Data Source=(localdb)\\MSSQLlocalDB;Initial Catalog=travelle

好的,我基本上是想验证输入的用户名是否重复,但是while循环中的字符串比较有问题

我尝试使用临时标签来验证值是否被正确提取

protected void BtnConfirmSignup_Click(object sender, EventArgs e)
{
    int f = 0;

    SqlConnection con = new SqlConnection("Data Source=(localdb)\\MSSQLlocalDB;Initial Catalog=traveller;Integrated Security=True;Pooling=False");
    SqlCommand cmd;
    SqlDataReader read;

    /*DEBUG: Prevent duplicate usernames*/

    try
    {
        Session["user"] = TxtUsrName.Text;
        Session["pass"] = TxtPsswd.Text;
        Session["email"] = TxtEmail.Text;

        //Label6.Text = "Faf";
        //  if ((Label6.Text).Equals(TxtUsrName.Text))
        //{
        //  Label6.Text = "dafuqqqq";
        //}
        //{
        //  Label6.Text = "wtf";
        //   Label6.Text = TxtUsrName.Text;
        //}

        cmd = new SqlCommand("select Name from Useriden", con);
        con.Open();
        read = cmd.ExecuteReader();

        while (read.Read())
        {
            Label6.Text = read["Name"].ToString();
            Label1.Text = "aaa";
            //Label6.Text = "Faf";
            if ((Label6.Text).Equals(TxtUsrName.Text))
            {
                f = 1;
                //Label6.Text = "Duplicate Username";
                break;
            }
        }

        if (f == 1)
        {
            Label6.Text = "Duplicate Username";
        }
        else if (f == 0)
        {
            Response.Redirect("SignUpNext.aspx");
        }
    }
    catch (Exception ex) 
    {
        LabelUserName.Visible = true;
        LabelUserName.Text = ex.Message;
        con.Close();
        ViewState["Caption"]=ex.Message;                
    }
}

预期:我输入了一个重复的名称,因此它应该将标签的文本更改为重复的用户名,但它会导航到下一页/f的值从未更改。

要添加到@EdPlunkett用序数大小写指出的内容中。。。您还应该确保没有额外的空间

Label6.Trim().Text.Equals(TxtUsrName.Text.Trim(), StringComparison.OrdinalIgnoreCase)

旁注:除非出现异常,否则您似乎也不会关闭SqlConnection。您可能应该使用

使用F9键在if Label6.Text.equalstxtxtsrname.Text上设置断点。使用调试器的“监视”窗口比较两个文本框中的字符串,或者将鼠标悬停在两个文本框上。它们是一样的,但大小写不同吗。等于将告诉您A和A是两个不同的字符串。Label6.Text.equalstxtxtusrname.Text,StringComparison.OrdinalIgnoreCase将忽略大小写。@EdPlunkett它们完全相同。我对它们都使用了字符串Faf。您需要在调试器中逐步完成代码。可能查询没有返回任何行,while循环永远不会执行。我不能确定交易是什么,因为我没有你的所有代码,也没有你的任何数据库,但在调试器中逐步执行应该会澄清很多问题。@Legendary还可以通过将连接包装在using中来处理它。我还将使用这些ADO.NET方法的异步版本。旁白:让数据库通过使用参数化查询执行检查将更有效:存在时选择大小写从Useriden中选择42,其中Name=@usrnamestringrmintextbx,然后1或0结束为UserExists;。