c# - 如果存在查询则更新

标签 c# sql

如果表中有一行,我正在尝试更新一条记录。更新记录后,我想从我的方法中返回 TRUE。我正在使用以下查询。我正在使用 SQL Server 2005。我如何知道我的 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.ExecuteNonQuery() 调用:

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);
}

或者您可以在 UPDATE 之后查询 SQL 语句中的 @@ROWCOUNT 属性:

...
BEGIN
   UPDATE ........

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

您可以返回该值,或检查大于零的值或任何您想做的事情。

关于c# - 如果存在查询则更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330982/

相关文章:

sql - PostgreSQL - 在关系策略中检测到无限递归

python - Django/PostgreSQL varchar 到 UUID

c# - 将 Excel 导入 ASP.NET 时的 OleDbDataAdapter 和列转换

c# - 如何防止 Zalgo 文本等变音符号

c# - 用另一个写一个可执行文件

c# - CloudConfigurationManager 不会覆盖外部文件中的设置

php - 将 2 个月前的 php linux 时间转换为等效的 MySQL 时间

c# - string.Format 在 HTML + javascript 上抛出 System.Format 异常

c# - 由组合框组成的非常简单的颜色选择器

sql - sqlite 中出现 "TYPE_FORWARD_ONLY"错误