我已使用以下代码成功更新了数据库:
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!”);尽管成功更新,但没有显示。我错过了什么吗?
修改 我试图计算更新查询中受影响的行数,如果数据库中有任何行已更改,则显示消息框。
答案 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,则行中将发生更改。 希望这会有所帮助。