【发布时间】:2017-03-02 08:47:59
【问题描述】:
我正在尝试创建一个错误处理程序,如果数据库中已经存在值,则您无法保存值,但是是的,错误消息正在显示并且对话框结果也同时显示,我想要如果值存在则显示错误,如果值不存在,则会显示对话框结果。
这是我的代码:
usercheck();
DialogResult dr = MetroMessageBox.Show(this, "Are you sure you want to Save without your desire Sales Count or Sales Amount?", "Wait!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (txtCount.Text == "0" || txtAmount.Text == "0")
{
if (dr == DialogResult.Yes)
{
Data.con.Open();
string SaveStr = "Insert into dbinfo.tbluser (UserID, UserName, UserPassword, UserLevel, TargetCount, TargetAmount) Values (@UserID, @UserName, @UserPassword, @UserLevel, @TargetCount, @TargetAmount)";
MySqlCommand SaveCmd = new MySqlCommand(SaveStr, Data.con);
SaveCmd.Parameters.AddWithValue("@UserID", txtID.Text);
SaveCmd.Parameters.AddWithValue("@UserName", txtName.Text);
SaveCmd.Parameters.AddWithValue("@UserPassword", txtPassword.Text);
SaveCmd.Parameters.AddWithValue("@UserLevel", cbLevel.Text);
SaveCmd.Parameters.AddWithValue("@TargetCount", txtCount.Text);
SaveCmd.Parameters.AddWithValue("@TargetAmount", txtAmount.Text);
SaveCmd.ExecuteNonQuery();
Data.con.Close();
LoadData();
MetroMessageBox.Show(this, "User Entry Saved!", "Saved!", MessageBoxButtons.OK, MessageBoxIcon.Information);
clear();
}
else if (dr == DialogResult.No)
{
clear();
}
}
这是我的 usercheck() 方法中的代码
string constring = "server=localhost;port=3306;username=root;password=root";
string Query = "Select * from dbinfo.tbluser where UserName=@UserName";
MySqlConnection con = new MySqlConnection(constring);
MySqlCommand Check = new MySqlCommand(Query, con);
Check.Parameters.AddWithValue("@UserName", this.txtName.Text);
con.Open();
MySqlDataReader dr = Check.ExecuteReader();
while (dr.Read())
{
if (dr.HasRows)
{
MetroMessageBox.Show(this, "The User Name " + dr[1].ToString() + " Already exist!","Existing User", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtName.Clear();
break;
}
else
{
txtCheck.Visible = false;
}
}
谢谢!
【问题讨论】:
-
注意*:
HasRows只会检查表是否包含一列或多行这是不言自明的,因此在您的代码中,除非表为空,否则 if 语句将始终为真。 -
@MongZhu 他不是问如何检查它,他是问如何修复显示的两条消息(用户存在但它仍然会尝试插入)。
标签: c#