Messagebox不显示数据库C#MySQL中是否存在受影响的行

时间:2015-08-07 09:07:39

标签: c# mysql

我已使用以下代码成功更新了数据库:

        private void btnUpdt_Click(object sender, EventArgs e)
    {
        connect_db();

        string name = txtName.Text;
        string rep = txtRep.Text;
        string contact = txtCntctNum.Text;
        string address = txtAdd.Text;
        string email = txtEmail.Text; 

        try
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.CommandText = "UPDATE clients SET client_Rep = @rep, client_Address = @address, client_CntctNum = @contact, client_Email = @email WHERE client_Name = @name";
            cmd.Parameters.AddWithValue("@name", name);
            cmd.Parameters.AddWithValue("@rep", rep);
            cmd.Parameters.AddWithValue("@address", address);
            cmd.Parameters.AddWithValue("@contact", contact);
            cmd.Parameters.AddWithValue("@email", email);
            cmd.Connection = connect;

            MySqlDataReader editClients = cmd.ExecuteReader();

            txtName.Clear();
            txtRep.Clear();
            txtAdd.Clear();
            txtCntctNum.Clear();
            txtEmail.Clear();

            txtName.ReadOnly = false;

            btnReg.Text = "REGISTER";
            btnReg.Name = "btnReg";
            btnReg.Click -= this.btnUpdt_Click;
            btnReg.Click += this.btnReg_Click;

            if (editClients.HasRows)
            {
                while (editClients.Read())
                {
                    MessageBox.Show("Client Successfully Updated!");
                }
            }                        

            if (editClients.Read())
            {
                connect.Close();
            }
            else
            {
                connect.Close();
            }

        }
        catch (Exception error)
        {
            MessageBox.Show(error.Message);
        }
    }

我不明白的是这个MessageBox.Show(“Client Successfully Updated!”);尽管成功更新,但没有显示。我错过了什么吗?

修改 我试图计算更新查询中受影响的行数,如果数据库中有任何行已更改,则显示消息框。

2 个答案:

答案 0 :(得分:0)

也许你应该尝试使用cmd.ExecuteNonQuery();
并注释掉mysqldatareader相关代码

       int numberOfrows = cmd.ExecuteNonQuery();
       if (numberOfrows > 0)
        {
             //means update is sucessful
                MessageBox.Show("Client Successfully Updated!");

        } 
        btnReg.Click -= this.btnUpdt_Click;
        btnReg.Click += this.btnReg_Click;

答案 1 :(得分:0)

如果您想获得受查询影响的行数,那么我认为您也可以使用:

EditClients.RowsAffected

要做同样的财产。 如果EditClients.RowsAffected大于或等于1,则行中将发生更改。 希望这会有所帮助。