关于ExecuteNonQuery()执行成功却返回-1的问题

对于增删改数据,一般判断ExecuteNonQuery()是否大于0


 mark= Comm.ExecuteNonQuery()>0?true:false;

 

注意:关于ExecuteNonQuery()执行成功却返回-1的问题

 

通过ExecuteNonQuery()的返回值来判断操作数据库的成功与否是可以的.但是要分情况.


1.ExecuteNonQuery() 不执行存储过程.


此时如果对数据库执行,插入,更新,删除操作,返回的是 受影响的行数.(及一个大于等于0的整数)


2.ExecuteNonQuery() 执行查询不返回影响的行数.


2.ExecuteNonQuery   执行存储过程.


[1].存储过程有返回值(传出参数)

    (1).把数据库中受影响的行数赋给返回值,这是得到的返回值是受影响的函数(大于或等于0的整数).


    (2).把某个值赋给返回值.


[2].存储过程没有返回值


    执行成功后返回 -1.


(没有返回值的存储过程理应 返回 受影响的行数 (执行 增删改) 但是.但我们在ado.net中执行存储过程的时候,dotnet 自动为给了存储过程一个默认值:set nocount on;
所以给我们的感觉是执行存储过程默认返回 -1  )

你可能感兴趣的:(关于ExecuteNonQuery()执行成功却返回-1的问题)