代码之家  ›  专栏  ›  技术社区  ›  peacedog

如果没有行受影响,.net SqlCommand.ExecuteOnQuery()应该返回什么值?

  •  0
  • peacedog  · 技术社区  · 16 年前

    我有以下代码:

    int result = -1;
    StringBuilder sb = new StringBuilder();
    SqlCommand cmd = MyConnection.
    sb.AppendLine("delete from Table1 where ID in");
    sb.AppendLine("(select id from Table1 t1 where  not exists(select * from Table2 t2 where t2.Table1ID = t1.ID))");
    cmd.CommandText = sb.ToString();
    result = cmd.ExecuteNonQuery();
    _log.Info("StoredXMLDocument Records Deleted: " + result.ToString());
    

    更具可读性的SQL格式是:

    delete from Table1 where ID in
    (select id from Table1 t1 where  not exists(select * from Table2 t2 where t2.Table1ID = t1.ID))
    

    获取值1。 I was expecting it to be 0

    :好的,现在当我在数据库中运行sql时,它会删除一行。请注意,在所有测试之前,我将从为此目的而保存的备份中恢复数据库。我发誓它今天早上或昨天下午没有删除任何行,是的,那是在恢复备份之后。我要让我的疯狂药丸消磨掉,今天下午再讨论这个问题。希望头脑更清醒。

    2 回复  |  直到 16 年前
        1
  •  1
  •   SLaks    16 年前

    0 .

    尝试比较 SELECT COUNT(*) Table1 比赛前后 DELETE .

        2
  •  0
  •   D'Arcy Rittich    16 年前

    请注意,您的查询可以简化为:

    delete from Table1 where ID not in (select Table1ID from Table2)
    

    为了兴趣,试试这个:

    delete from Table1 where 1 = 0 --we know this will delete no rows
    

    Table1 .

    推荐文章