我在登录用户时遇到了问题。每当我运行程序时,程序都不会执行Wait
表单,除非Username
与数据库相同。
我希望每当用户输入与数据库不同的Username
时,Wait
表单也将执行,而不仅仅是Username
与数据库相同时。
以下是代码:
private void CheckUserDatabase(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "SELECT * FROM [Member] WHERE [Username] = @Username";
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(query, conn))
{
cmd.Parameters.Add("@Username", System.Data.OleDb.OleDbType.VarChar);
cmd.Parameters["@Username"].Value = this.textBox1.Text;
using (OleDbDataReader dReader = cmd.ExecuteReader())
{
if (dReader.Read())
{
_wait.ShowDialog();
UserInformation.CurrentLoggedInUserLanguage = comboBox1.Text;
UserInformation.Password = (string)dReader["Password"];
isValidPassword = BCrypt.CheckPassword(this.textBox2.Text, UserInformation.Password);
if (isValidPassword)
{
System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sound.Play();
DialogResult _dialogResult = MessageBox.Show("Verified", "Congratulations", MessageBoxButtons.OK);
if (_dialogResult == DialogResult.OK)
{
UserInformation.CurrentLoggedInName = (string)dReader["ChosenName"];
UserInformation.CurrentLoggedInUser = (string)dReader["Username"];
UserInformation.CurrentLoggedInUserType = (string)dReader["UserType"];
UserInformation.CurrentLoggedInUserStore = (string)dReader["UserStore"];
this.Hide();
Choices _choices = new Choices();
_choices.ShowDialog();
this.Close();
}
}
else if (!isValidPassword)
{
System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Notify.wav");
sound.Play();
DialogResult _dialogResult = MessageBox.Show("Not Verified", "Warning", MessageBoxButtons.OK);
if (_dialogResult == DialogResult.OK)
{
Validation(sender, e);
RecursiveClearTextBoxes(this.Controls);
}
}
}
dReader.Close();
}
}
conn.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
CheckUserDatabase(sender, e);
}
这是图片:
信息:this.textBox2.Text
是Password
文字框,this.textBox1.Text
是Username
文字框,button1_Click
是{{1}按钮。
注意:Log on
是_wait.ShowDialog
表单,如下图所示:
答案 0 :(得分:2)
改变这个:
private void button1_Click(object sender, EventArgs e)
{
CheckUserDatabase(sender, e);
}
对此:
private void button1_Click(object sender, EventArgs e)
{
_wait.ShowDialog();
CheckUserDatabase(sender, e);
}
并从_wait.ShowDialog();
方法移除CheckUserDatabase()
。