检查更新的行数

sal*_*man 1 c# ado.net

嘿,我用SQL在C#中建立数据库连接但是有一些缺点我想覆盖它.例如,当我更新即使没有记录,它也不会显示错误也不会更新.与DELETE相同的情况.

private void button3_Click(object sender, EventArgs e)
{
    setData();
    bool flag = db.UpdateData("UPDATE trytb SET Name = '"+dc.Name+"' WHERE ID = '"+dc.ID+"'");
    if (flag)
        MessageBox.Show("Record Updated");
    else
        MessageBox.Show("Not Updated");
}

public bool DeleteData(string qry)
{
    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(qry, conn);
        cmd.ExecuteNonQuery();
        flag = true;
        conn.Close();
        return flag;
    }
    catch
    {
        return flag;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 5

ExecuteNonQuery可以返回受影响的行数; 你可以抓住它并作出相应的反应; 你通常会期望它1(除非你有触发器等):

对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数.当插入或更新的表上存在触发器时,返回值包括插入或更新操作影响的行数以及受触发器或触发器影响的行数.对于所有其他类型的语句,返回值为-1.如果发生回滚,则返回值也为-1.

对于更复杂的查询,返回与@@ROWCOUNT(在查询中的某个点捕获)相关的值可能是有用的ExecuteScalar.在某些情况下,您可能需要手动检查数据是否存在.