Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果存在查询,则更新_C#_Sql - Fatal编程技术网

C# 如果存在查询,则更新

C# 如果存在查询,则更新,c#,sql,C#,Sql,如果表中有行,我将尝试更新记录。更新记录后,我希望从方法返回TRUE。我正在使用以下查询。我正在使用SQLServer2005。如何知道我的SQL查询是否更新了表?请让我知道 Private Boolean UpdateTable() { string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND CID=@cID) BEGIN .....

如果表中有行,我将尝试更新记录。更新记录后,我希望从方法返回TRUE。我正在使用以下查询。我正在使用SQLServer2005。如何知道我的SQL查询是否更新了表?请让我知道

Private Boolean UpdateTable()
{
  string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND   A.CNum is NULL AND CID=@cID) BEGIN ..... END" 

}

谢谢您。

每当您执行一批SQL时,您都会收到关于修改/插入/更新了多少行的通知,作为例如SqlCommand.ExecuteOnQuery调用的返回值:

或者,您可以在更新后在SQL语句中查询@ROWCOUNT属性:


您可以返回该值,或检查大于零的值或任何您想执行的操作。

您可以使用运行查询,这将返回受影响的行数1或0。

谢谢。我的SQL查询似乎有问题。如何使用连接条件编写update语句?从表A、表B中更新表A集合CNUM=@CNUM,其中A.CID=B.CID和A.CNUM为空,且CID=@cidThank。它正在工作。这是我的问题。我不知道这是正确的方法。如果存在从表A中选择A.CNum,则表B中的A.CID=B.CID和A.CNum为空,并且CID=@CID BEGIN DECLARE@Updated INT UPDATE TABLEA SET CNum='test'来自表A,表B,其中A.CID=B.CID和A.CNum为NULL,且CID=@CID SELECT@Updated=@@ROWCOUNTEND@nav100:将大型代码段放在注释中不是一件好事-它们的格式无法使其看起来很好。你为什么不直接用你的最终答案来修改你原来的问题呢?那对我们大家都更有用!谢谢。如果使用设置为NOCOUNT ON的关键字,则通过RowsAffected=obj.ExecuteOnQuery返回受影响的行可能会导致-1值。最好还是通过输出参数或选择“RowsAffected=@@ROWCOUNT记录集”返回计数,以防在上使用SET-NOCOUNT。如果要检索下面的行支持版本,请不要使用SET NOCOUNT ON关键字,但我始终启用SET NOCOUNT ON;因为这种方法非常昂贵,在我的《标准与最佳实践》一书中,我一直在使用它。这就是我想警告你的原因。
Private Boolean UpdateTable()
{
    int rowsUpdated = 0;

    string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND   A.CNum is NULL AND CID=@cID) BEGIN ..... END" 

    using(SqlConnection con = new SqlConnection("your-connection-string-here"))
    {
        using(SqlCommand cmd = new SqlCommand(sql, con)) 
        {
           con.Open();
           rowsUpdated = cmd.ExecuteNonQuery();
           con.Close();
        }
    }

    return (rowsUpdated > 0);
}
...
BEGIN
   UPDATE ........

   DECLARE @Updated INT
   SELECT @Updated = @@ROWCOUNT
END