Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当出现错误时,阻止按钮继续_C#_Winforms_Ms Access 2010 - Fatal编程技术网

C# 当出现错误时,阻止按钮继续

C# 当出现错误时,阻止按钮继续,c#,winforms,ms-access-2010,C#,Winforms,Ms Access 2010,当出现错误时,如何防止按钮继续 我已经可以检查数据库中用户名的可用性,但即使该用户名在数据库中不存在,“检查可用性”按钮仍会将其识别为存在 以下是截图: 上图显示用户名“Seranne”已经存在,但在数据库中,Seranne不存在 代码如下: else if (textBox1.Text.Length > 0 && textBox2.Text == textBox3.Text) { label5.Visible =

当出现错误时,如何防止按钮继续

我已经可以检查数据库中用户名的可用性,但即使该用户名在数据库中不存在,“检查可用性”按钮仍会将其识别为存在

以下是截图:

上图显示用户名“Seranne”已经存在,但在数据库中,Seranne不存在

代码如下:

else if (textBox1.Text.Length > 0 && textBox2.Text == textBox3.Text)
            {
                label5.Visible = false;
                label7.Visible = false;

                conn.Open();

                CheckUsername();

                if (CheckUsername() == false)
                {
                    return;
                }

                cmd.CommandText = "INSERT INTO [Member] ([Username], [Password], [UserType]) VALUES (@Username, @Password, @UserType)";

                cmd.Parameters.Add("Username", System.Data.OleDb.OleDbType.VarChar);
                cmd.Parameters["Username"].Value = this.textBox1.Text;

                cmd.Parameters.Add("Password", System.Data.OleDb.OleDbType.VarChar);
                cmd.Parameters["Password"].Value = this.textBox2.Text;

                cmd.Parameters.Add("UserType", System.Data.OleDb.OleDbType.VarChar);
                cmd.Parameters["UserType"].Value = this.comboBox1.Text;

                int numberOfRows = cmd.ExecuteNonQuery();

                conn.Close();

                System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Notify.wav");
                sound.Play();
                var dialogresult = MessageBox.Show("Your username and password has been recorded", "Congratulations", MessageBoxButtons.OK);

                CreateTable();

                if (dialogresult == DialogResult.OK)
                {
                   this.Hide();

                   Form1 form = new Form1();
                   form.ShowDialog();

                   this.Close();
                }

private void CheckUsername()
        {
            OleDbConnection conn = new OleDbConnection();

            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Archives\Projects\Program\Sell System\Sell System\App_Data\db1.accdb";

            conn.Open();

            OleDbCommand cmd = new OleDbCommand("SELECT [Username] FROM [Member]", conn);

            cmd.Parameters.Add("Username", System.Data.OleDb.OleDbType.VarChar);
            cmd.Parameters["Username"].Value = this.textBox1.Text;

            OleDbDataReader reader = cmd.ExecuteReader();

            if (reader.HasRows)
            {
                System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Notify.wav");
                sound.Play();
                MessageBox.Show("Username already exists! Please use another username", "Warning");
                return false;
            }

            else
            {
                System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Notify.wav");
                sound.Play();
                MessageBox.Show("Username is not exists!", "Congratulations");
                return true;
            }
        }
编辑:即使用户名在数据库中不存在,“检查可用性”按钮仍会将其识别为存在,这就是我无法继续的原因

我如何解决这个问题? 提前谢谢

private bool CheckUsername()
{
  // return false if user name exists, otherwise tru
}
button_click(..)
{
  if(CheckUsername() == false)
  { 
     MessageBox.Show(Error Msg);
     return;
  }

  //save call
}

您可以在CheckUserName中添加一个返回值,如果返回false,则可以跳出该值

@KingKing:已附加在上述问题中。请再看一遍。谢谢,我稍后再试。代码已附在上述问题中。谢谢我已经尝试了你的代码,但是即使用户名不存在,messagebox仍然识别它存在。我会编辑上面的代码,请参考