码迷,mamicode.com
首页 > 数据库 > 详细

SQLCommand.ExecutenonQuery受影响的行数为什么会是-1?

时间:2015-09-09 12:56:22      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

一般我们在执行SQL语句的时候会调用ExecuteNonQuery();然后用一个声明一个int值接受这个受影响的行数,通过判断这个int值,我们可以得知这条SQL语句是否已经执行。通常我们判断就是这个int值大于0,因为我们知道,最起码受影响的行数是1,我们判断大于0就OK了,但是在运行时我们发现我们判断的语句的值为false,为什么呢?最后查了一下MSDN文档,看完解释就明白了。

对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。


当我们用executenonquery执行select语句的时候于是就有了返回值为-1,回滚发生在事务中,如果执行SQL不包含事务,可以不做考虑。有事务的话,就要看看是哪里出错了,导致提交不成功,事务回滚。

下面看一下这个Demo

 1 private int Select(string selectqueryString,
 2     string connectionString)
 3 {
 4     using (SqlConnection connection = new SqlConnection(
 5                connectionString))
 6     {
 7         SqlCommand command = new SqlCommand(selectqueryString, connection);
 8         command.Connection.Open();
 9         int result=command.ExecuteNonQuery();
10         return result;
11     }
12 }
13 //result 的值为-1
14 private int Common(string queryString,
15     string connectionString)
16 {
17     using (SqlConnection connection = new SqlConnection(
18                connectionString))
19     {
20         SqlCommand command = new SqlCommand(queryString, connection);
21         command.Connection.Open();
22         int result= command.ExecuteNonQuery();
23         return result;
24     }
25 }
26 //这里的querystring为update insert delete语句
27 //result的值为受影响的行数

 

SQLCommand.ExecutenonQuery受影响的行数为什么会是-1?

标签:

原文地址:http://www.cnblogs.com/JayWist/p/4794198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!