只有当用户名与数据库相同时,才会执行与数据库的连接

时间:2014-04-17 22:22:31

标签: c# database winforms

我在登录用户时遇到了问题。每当我运行程序时,程序都不会执行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);
}

这是图片:

enter image description here

信息:this.textBox2.TextPassword文字框,this.textBox1.TextUsername文字框,button1_Click是{{1}按钮。

注意:Log on_wait.ShowDialog表单,如下图所示:

enter image description here

1 个答案:

答案 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()