正如我所说,我想在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?");
}
}
}
现在,如果我给程序一个已经存在于数据库中的名称,它并没有告诉我它已经被采用,只是连续的。
答案 0 :(得分:1)
问题在于:
while (string.IsNullOrEmpty(name) && IsUsernameAlreadyTaken(name)==false)
您要求代码执行的操作是:
name
为空或空显然这种逻辑存在严重缺陷。
你的意思是?
while (string.IsNullOrEmpty(name) || IsUsernameAlreadyTaken(name)==false)