为何 SqlCommand.ExecuteNonQuery() 方法返回 -1 数据库
不知道你们在使用ExecuteNonQuery方法的时候有没有碰到过返回-1的状况。ExecuteNonQuery方法返回增删改时,受影响的行数。那怎么会返回-1呢 查了一些资料后终于得知返回-1的缘由。测试
在进行增删改时,数据库能为咱们统计受影响行数的前提条件是,关闭NOCOUNT,即 Set nocount off。默认状况下,它是关闭的,即咱们是能够获得受影响的行数的。你能够测试以下(加与不加set nocount on是有区别的):ui
SqlCommand cmd = new SqlCommand("set nocount on; insert into test values ('test')", con);spa
int rows = cmd.ExecuteNonQuery();cmd
有的人就说了,我仅仅是调用一个简单的存储过程,怎么仍是返回-1呢 这个是因为Visual Studio引发的。it
咱们在Visual Studio中写了一个存储过程时,它会被默认加上set nocount on。这样就致使了调用存储过程时始终得不到影响的行数,而返回-1。不过我在Visual Studio 2008 Team Suit中测试了下,这个问题不存在了。可能之前的版本有这样的问题吧(未测试),碰到这种状况就多留意些。io