C#检查用户名是否为空或空,也未使用

时间:2017-10-02 18:52:18

标签: c# sql while-loop username

正如我所说,我想在Register中检查用户名是否为空,或者为空 也没有采取过。

    static SqlConnection Con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=heres_the_path;Integrated Security=True");
    static string name,pass,email;
    static DataTable dt = new DataTable();

请帮我修复代码,问题出在这里:

static bool IsUsernameAlreadyTaken(string name)//Username Checker
    {
        SqlDataAdapter sda = new SqlDataAdapter("SELECT count(*) FROM Login WHERE Nev='" + name + "'", Con);
        sda.Fill(dt);
        if (dt.Rows[0][0].ToString() == "1") return true;
        else return false;
    }

或者在这个while循环中:

static void Register() {  
        Console.WriteLine("What will be your username?");
        while (string.IsNullOrEmpty(name) && IsUsernameAlreadyTaken(name)==false)
        {
            name = Console.ReadLine();
            if (IsUsernameAlreadyTaken(name))
            {
                Console.WriteLine("That's already taken");
            }
            if (string.IsNullOrEmpty(name))
            {
                Console.WriteLine("Why?");
            } 
        }
}

现在,如果我给程序一个已经存在于数据库中的名称,它并没有告诉我它已经被采用,只是连续的。

1 个答案:

答案 0 :(得分:1)

问题在于:

while (string.IsNullOrEmpty(name) && IsUsernameAlreadyTaken(name)==false)

您要求代码执行的操作是:

  1. 检查以确保name为空或空
  2. 如果为空或空,请检查是否已经采用。
  3. 显然这种逻辑存在严重缺陷。

    你的意思是?

    while (string.IsNullOrEmpty(name) || IsUsernameAlreadyTaken(name)==false)