为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1
2011-09-18 00:00
399 查看
为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1
不知道大家在使用ExecuteNonQuery方法的时候有没有碰到过返回-1的情况。ExecuteNonQuery方法返回增删改时,受影响的行数。那怎么会返回-1呢 查了一些资料后终于得知返回-1的原因。
在进行增删改时,数据库能为我们统计受影响行数的前提条件是,关闭NOCOUNT,即 Set nocount off。默认情况下,它是关闭的,即我们是可以得到受影响的行数的。你可以测试如下(加与不加set nocount on是有区别的):
SqlCommand cmd = new SqlCommand("set nocount on; insert into test values ('test')", con);
int rows = cmd.ExecuteNonQuery();
有的人就说了,我仅仅是调用一个简单的存储过程,怎么还是返回-1呢 这个是由于Visual Studio引起的。
我们在Visual Studio中写了一个存储过程时,它会被默认加上set nocount on。这样就导致了调用存储过程时始终得不到影响的行数,而返回-1。不过我在Visual Studio 2008 Team Suit中测试了下,这个问题不存在了。可能以前的版本有这样的问题吧(未测试),碰到这种情况就多留意些。
不知道大家在使用ExecuteNonQuery方法的时候有没有碰到过返回-1的情况。ExecuteNonQuery方法返回增删改时,受影响的行数。那怎么会返回-1呢 查了一些资料后终于得知返回-1的原因。
在进行增删改时,数据库能为我们统计受影响行数的前提条件是,关闭NOCOUNT,即 Set nocount off。默认情况下,它是关闭的,即我们是可以得到受影响的行数的。你可以测试如下(加与不加set nocount on是有区别的):
SqlCommand cmd = new SqlCommand("set nocount on; insert into test values ('test')", con);
int rows = cmd.ExecuteNonQuery();
有的人就说了,我仅仅是调用一个简单的存储过程,怎么还是返回-1呢 这个是由于Visual Studio引起的。
我们在Visual Studio中写了一个存储过程时,它会被默认加上set nocount on。这样就导致了调用存储过程时始终得不到影响的行数,而返回-1。不过我在Visual Studio 2008 Team Suit中测试了下,这个问题不存在了。可能以前的版本有这样的问题吧(未测试),碰到这种情况就多留意些。
相关文章推荐
- 为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1?
- 为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1?
- SqlCommand.ExecuteNonQuery() 执行存储过程不返回受影响行数
- sqlCommand.ExecuteNonQuery返回sql语句影响行数问题
- SqlCommand.ExecuteNonQuery 的返回值
- SqlCommand.ExecuteNonQuery 方法
- SqlCommand.ExecuteNonQuery 方法
- Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() 问题处理方法
- java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转)
- SqlCommand.ExecuteNonQuery与SqlCommand.ExecuteScalar的区别
- java createSQLQuery().list()返回日期格式没有时分秒的解决方法
- DAL 操作数据库方法ExecuteNonQuery/ExecuteScalar/SqlDataAdapter/SqlDataReader
- sqlCommand.ExecuteNonQuery()返回值适用范围
- CreateSqlQuery()/CreateQuery()/返回Map结果集相关方法列举
- java createSQLQuery().list()返回日期格式没有时分秒的解决方法
- sqlQuery.list()方法返回类型
- Hibernate中CreateSQLQuery的executeUpdate(sql)方法的返回值
- C# sqlserver ExecuteNonQuery()方法详解 返回值为-1
- SqlCommand.ExecuteNonQuery()的返回值问题
- SqlCommand.ExecuteNonQuery()执行查询返回值的问题