代码之家  ›  专栏  ›  技术社区  ›  Lea Cohen mark winkle

ExecuteOnQuery返回-1,即使执行成功

  •  3
  • Lea Cohen mark winkle  · 技术社区  · 17 年前

    我正在运行一个ASP.NET 2.0 Web应用程序。今天早上,executenquery突然开始返回-1,即使executenquery正在运行的sp中的命令正在执行(我在db中看到插入和更新的项),也不会引发异常。

    只有当我连接到生产数据库时才会发生这种情况。当我连接到开发数据库时,它们会返回受影响的正确行数。

    而且,有趣的是,executedataset没有问题——它可以漂亮地返回数据集。

    所以这看起来不像是连接问题。但是,那还能是什么呢?

    4 回复  |  直到 9 年前
        1
  •  5
  •   Kirtan    17 年前

    你也可以检查程序,看看里面有没有这行代码-

    SET NOCOUNT ON
    

    这将导致executeNonQuery始终返回-1。

        2
  •  2
  •   Dead account    17 年前

    -1表示“不影响行”。
    select语句也将返回-1。

    检查SP对开发和活动环境的影响。

    取自 SqlCommand::ExecuteNonQuery Method

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

        3
  •  1
  •   Community Mohan Dere    9 年前

    我遇到 almost same problem (尽管在PostgreSQL中)对于npgsqldataadapter,update方法始终返回1。

    也许到开发数据库的连接字符串不同于生产数据库。或者,如果它们的连接字符串之间真的没有区别,那么生产数据库的服务包可能与开发数据库不同。

        4
  •  0
  •   Hrishikesh    9 年前

    exceutenonquery为所有类型的存储过程返回-1 msdn

    只有在饱和情况下,它才会返回更新的记录值。