【发布时间】:2018-04-13 06:13:08
【问题描述】:
我不知道为什么我的 while 循环中的 else 值仍在循环,无论结果是登录还是无效。警报对话框始终弹出。
这些是我的代码。
MySqlConnection conn = new MySqlConnection();
string query = "server=sample.com;port=3306;database=sample;user id=sample;password=sample";
conn.ConnectionString = query;
MySqlCommand cmd = new MySqlCommand("select * from wp_users", conn);
try
{
conn.Open();
MySqlDataReader myReader = cmd.ExecuteReader();
string user1 = "";
string pass1 = "";
//bool stopLoop = false; // stop looping for false value;
while (myReader.Read())
{
user1 = myReader[1].ToString(); //datacolumn -> user_login
pass1 = myReader[2].ToString(); //datacolumn -> user_pass
if ((user1 == txtUsername.Text) && (pass1 == txtPassword.Text))
{
Intent myIntent;
myIntent = new Intent(Activity, typeof(index));
string a = user1;
myIntent.PutExtra("myItem", a);
StartActivity(myIntent);
}
else
{
Android.Support.V7.App.AlertDialog.Builder alert = new Android.Support.V7.App.AlertDialog.Builder(Activity);
alert.SetMessage("Invalid username or password");
alert.SetPositiveButton("Ok", (senderAlert, args) =>
{
alert.Dispose();
});
alert.Show();
}
}
myReader.Close();
}
catch (MySqlException ex)
{
Android.Support.V7.App.AlertDialog.Builder except = new Android.Support.V7.App.AlertDialog.Builder(Activity);
except.SetTitle("Please report this to our website(error server timeout)");
except.SetMessage(ex.ToString());
except.SetPositiveButton("Ok", (senderAlert, args) =>
{
except.Dispose();
});
except.Show();
}
finally
{
conn.Close();
}
【问题讨论】:
-
但是你没有跳出循环..
-
我尝试将它插入到我的 else 语句中。但结果总是错误的。但是如果我删除休息;在我的其他声明中。用户将登录,但在系统登录之前将首先显示警报弹出窗口。
-
首先会弹出误报对话框。我不知道如何打破它:(
-
按列的名称引用列,以确保您正在检查的列是您想要检查的列
myReader["user_login"]。作为一般规则,执行select * from不是一个好习惯,更难维护,如果您需要来自其他表的额外数据,您将检索到比预期更多的数据。最后,您可以使用 SQLwhere子句并摆脱 while。
标签: c# android visual-studio xamarin xamarin.android