【问题标题】:error handler in if values is existing in database c#如果数据库中存在值c#中的错误处理程序
【发布时间】: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#


【解决方案1】:

让你的 userCheck 方法返回一个类似 UserExists 方法的布尔值。
它的工作原理如下:
在存储用户之前,if 检查用户是否存在。
UserExists 方法中,如果用户存在则显示错误并返回true
然后,如果它返回 trueStoreUser 方法将在存储用户之前返回。
如果它返回false(用户不存在),StoreUser 方法将照常继续。

    public static void StoreUser()
    {
        if ( UserExists( "username" ) )
        {
            //Will stop here if user exists
            return;
        }
        //Storing user code
    }
    public static bool UserExists(string userName)
    {
        if (userName == "EXISTS")
        {
            //Show error
            return true;
        }
        return false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2011-04-30
    • 2011-11-03
    相关资源
    最近更新 更多