C# 当出现错误时,阻止按钮继续
当出现错误时,如何防止按钮继续 我已经可以检查数据库中用户名的可用性,但即使该用户名在数据库中不存在,“检查可用性”按钮仍会将其识别为存在 以下是截图: 上图显示用户名“Seranne”已经存在,但在数据库中,Seranne不存在 代码如下: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 =
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仍然识别它存在。我会编辑上面的代码,请参考