C# while循环C的登录系统问题#
我正在使用c#和XAML开发一个windows应用商店应用程序。当尝试对登录进行编码时,会出现以下问题。在while循环中,系统不会传递给else语句,而是传递给C# while循环C的登录系统问题#,c#,windows,if-statement,while-loop,windows-store-apps,C#,Windows,If Statement,While Loop,Windows Store Apps,我正在使用c#和XAML开发一个windows应用商店应用程序。当尝试对登录进行编码时,会出现以下问题。在while循环中,系统不会传递给else语句,而是传递给conn.Close() 我如何解决这个问题 这是我的登录按钮代码 private async void button_login_Click(object sender, RoutedEventArgs e) { string username = usernameInput.T
conn.Close()代码>
我如何解决这个问题
这是我的登录按钮代码
private async void button_login_Click(object sender, RoutedEventArgs e)
{
string username = usernameInput.Text;
string password = passwordInput.Password;
try
{
string Query = "SELECT`tbl_user_std`.`user_id`,`tbl_user_std`.`username`,`tbl_user_std`.`pass`FROM `bcasdb`.`tbl_user_std`WHERE `tbl_user_std`.`username` = @UserName AND `tbl_user_std`.`pass` = @Password;";
MySqlConnection conn = new MySqlConnection(BC
ASApp.DataModel.DB_CON.connection);
MySqlCommand cmd = new MySqlCommand(Query, conn);
cmd.Parameters.AddWithValue("@UserName", username);
cmd.Parameters.AddWithValue("@Password", password);
MySqlDataReader MyReader;
conn.Open();
bool valid = false;
MyReader = cmd.ExecuteReader();
while (MyReader.Read())
{
if (username == usernameInput.Text & password == passwordInput.Password)
{
if (valid = true & this.Frame != null)
{
this.Frame.Navigate(typeof(StdinfoPage));
}
}
else
{
messageBox();
}
}
conn.Close();
}
catch (Exception )
{
}
}
如果在if语句中缺少签名(&S),则需要为AND运算符添加(&S)
有关更多信息,请参阅本文:
基于代码的逻辑-如果数据库中没有具有指定的用户名和密码的用户,那么服务器将不会返回任何内容,而(MyReader.Read())
将不会执行循环,和else
条件下的语句也不会执行-因此您需要处理这种情况。我认为这里不需要循环,因为数据库中不应该有两个或两个以上用户名/密码相同的用户
还要注意关于&
操作员的其他答案
下一个注释。。。。查看语句if(valid=true&this.Frame!=null)
。我想你的意思是在这种情况下检查valid==true
。请注意,c#相等运算符是=
而不是=
下一个注意事项-您已将valid
变量指定给false
,并且不会在代码中的任何地方更改它。因此,if(valid==true&this.Frame!=null)
条件永远不会满足。(顺便说一下,它可以简化为if(valid&this.Frame!=null))
结语。看起来您应该使用将代码片段更改为如下内容:
if (MyReader.Read()
&& username == usernameInput.Text
&& password == passwordInput.Password
&& this.Frame != null
)
this.Frame.Navigate(typeof(StdinfoPage));
else
messageBox();
我不确定用户名=usernameInput.Text&&password==passwordInput.password是否正确。您的代码不太清楚,但它看起来是多余的。替换该行
if (username == usernameInput.Text & password == passwordInput.Password)
与
你忘了用双&'
if (username == usernameInput.Text && password == passwordInput.Password)