ExecuteNonQuery()返回值的几种情况

如题所述

ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete语句执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1。

(回滚的意思:删除由一个或多个部分完成的事务执行的更新。为在应用程序、数据库或系统错误后还原数据库的完整性,需要使用回滚。回滚泛指程序更新失败, 返回上一次正确状态的行为)

对于这种更新操作 用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了。

例如对数据库共添加一个数据表的Create操作,当创建数据表成功时返回-1,如果操作失败的话(如数据表已经存在)往往会发生异常,所以执行这种操作时最好用try--catch--语句来容错。

简单意思是用sql语句创建数据库,创建数据表等等一些对数据库结构的操作最好不要用大于0来判断是否操作成功。

扩展资料

c#数据执行方法:

1、使用ExecuteReader()操作数据库,执行查询操作的非常好的方法。

ExecuteReader比DataSet而言,DataReader具有较快的访问能力,并且能够使用较少的服务器资源。DataReader对象提供了游标形式的读取方式,当从结果行中读取了一行,则游标会继续读取到下一行。

通过read方法可以判断数据是否还有下一行,如果存在数据,则继续运行返回true,如果没有数据,则返回false。DataReader可以提高执行效率,基于序号的查询可以使用DataReader。

使用ExecuteReader()操作数据库,通常情况下是使用ExecuteReader()进行数据查询操作,使用ExecuteReader()查询数据能够提升查询效率,而如果需要进行数据库事务处理的话,ExecuteReader()并不是一个理想的选择。

2、使用ExecuteNonQuery(),ExecuteScalar()操作数据库,执行增删改操作的利器

ExecuteNonQuery()通常情况下为数据库事务处理的首选,当需要执行插入,删除,修改等操作时,首选ExecuteNonQuery(),ExecuteNonQuery()执行成功返回的是一受影响的行数,对于"Create Table"和"Drop Table"语句,返回值是0。

而对于其他类型的语句,返回值是-1,ExecuteNonQuery()操作数据时,可以不使用DataSet直接更改数据库中的数据。

ExecuteScalar()方法也可以用来执行SQL语句,但是executescalar()执行SQL语句后返回值与ExecuteNonQuery()并不相同,executescalar()方法的返回值的数据类型是object。

如果执行的SQL语句是查询语句,则返回结果是查询后的第一行第一列,如果执行的SQL语句不是一个查询语句,则会返回一个未实例化的对象,必须通过类型装换来显示。

一般情况下,ExecuteNonQuery()操作后返回的是一个值,而executescalar()操作后则会返回一个对象,executescalar()经常使用当需要返回单一值时的情况。例如当插入一条数据信息时,需要马上知道刚才插入的值,则可以使用executescalar()方法。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-02
查到下面文章。
关于ExecuteNonQuery() 方法
以前对这个一直都没在意,基本上都没有用其返回值,查了一下MSDN,如下:
SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数。备注:可以使用ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行
Update、Insert 或 Delete 语句,在不使用 DataSet 的情况下更改数据库中的数据。虽然ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于Update、Insert 和 Delete 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为
-1。如果发生回滚,返回值也为 -1
执行Select子句,数据库并无变化,自然返回-1。同样适合ODBC、OLE
DB等数据源,因为都实现IDbCommand.ExecuteNonQuery方法。函数申明:
[Visual Basic]
Public Overridable Function ExecuteNonQuery() As IntegerImplements_IDbCommand.ExecuteNonQuery实现:
IDbCommand.ExecuteNonQuery
对于IDbCommand.ExecuteNonQuery
方法,针对 .NET Framework 数据提供程序的 Connection 对象执行 SQL
语句,并返回受影响的行数。可以使用ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行
Update、Insert 或 Delete 语句,在不使用 DataSet 的情况下更改数据库中的数据。虽然ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于其他所有类型的语句,返回值为 -1本回答被提问者采纳

ExecuteNonQuery()返回值的几种情况
ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete语句执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1。(回滚的意思:删除由一个或多个部分完成的事务执行的...

cmd.ExecuteNonQuery(); 为什么返回-1 高手请进
在.NET中,ExecuteNonQuery方法返回受到Insert,Update 和 Delete 操作影响的行数。对于所有其他查询都返回 –1,而不是一般认为的0。

C# 编程cmd.executenonquery 的返回值有哪些?各有什么意义?
根据MSDN,对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。意义就是通过返回值可以大致判断执行的成功与否。http:\/\/msdn.microsoft.com\/zh-cn\/library\/system.data.sqlclient.sqlcommand.executenonquery(VS.80)....

Command对象的ExecuteNonQuery()方法、ExecuteReader()方法及ExecuteSca...
ExecuteNonQuery()的返回值int型,(返回受影响的行数,一般用于插入,增加,删除语句)。ExecuteReader()返回值是DataReader型的(用来读取信息,一般用于查询语句,从表和视图中)ExecuteScalar()返回值是object型的(返回第一行第一列的值,根据情况进行类型转换)...

C#用ExecuteNonQuery更新数据库程序,为什么返回值一直为0
ExecuteNonQuery返回受影响行数,如果执行的是update语句,返回0表示没有行被更新。这又包括两种情况,一是确实没有命中需要更新的行,二是命中了需要更新的行,但新值与旧值一致,不需要更新。第二种情况不同的数据库行为不太一样,有些仍然会返回命中的行数,有些直接返回0。

vb executenonquery 返回值 是什么意思?
executenonquery 的返回值是 你此次SQL查询语句执行后所影响的记录条数。例如表 tblTemp 中有个字段为 ColA 其中共有10条记录,记录中的ColA值分别是1-10 当执行: Delete From tblTemp Where ColA < 3 得到的结果为2 之后继续执行: Delete From tblTemp 得到的结果为8 最后再执行一次: Delete From...

cmd.ExecuteNonQuery返回值在哪
cmd.ExecuteNonQuery()这个方法会返回一个int类型的数值,表明SQL执行后数据库中受影响的行数,至于返回值返回给了谁,就看你自己怎么去处理。如果你不去接收返回值,那么它就并不会保留这个返回值 cmd.ExecuteNonQuery();...这样的话,返回值就没有被保留 要是你需要记录SQL语句执行后受影响的行数,...

c# SqlCommand对象的ExecuteNonQuery()方法返回为0,但是数据库里面却更...
虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 Update、Insert 和 Delete 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1 执行Select子句,数据库并无变化,自然返回-1。返回为-1才是没改变啊...

.net OleDbCommand.ExecuteNonQuery的返回值问题
您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建表等数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 ...

ExecuteNonQuery();与ExecuteNonQuery()>0;各有什么意思
ExecuteNonQuery执行一个SqlCommand,该命令返回受操作影响的行数,该命令主要用于确定操作是否成功,比如插入、删除和更新操作,如果受影响的行数为0,则证明不成功。大于0表示操作成功。用于这种更新操作与我们通常的判断是大于0的操作应该没有问题,是更好的,但对于其他操作,如数据库的操作结构,如果返回...

相似回答