c# SqlCommand对象的ExecuteNonQuery()方法返回为0,但是数据库里面却更新成功?

ExecuteNonQuery方法返回的是这个语句所影响的行数吧?但是为什么返回得到的值是0 而我到数据库里面去查找相应的字段的具体的信息 却已经是改变了的了 这个是为什么呢?

第1个回答  2008-11-12
查了一下MSDN,如下:
SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数。
虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。
对于 Update、Insert 和 Delete 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1

执行Select子句,数据库并无变化,自然返回-1。

返回为-1才是没改变啊。。。有时候会返回0,是因为每个人的provider不同,所以不用返回0来判断是不是执行成功,而用返回-1来判断。。
第2个回答  2008-11-12
我记得 ExecuteNonQuery()这个方法不会返回影响行数吧,好像是执行成功返回 0,执行失败返回-1。
第3个回答  2008-11-12
把SQL语句贴出来看看
第4个回答  2008-11-12
用sqlconnect我也发现了这个问题,貌似成功返回0不成功返回-1本回答被提问者采纳
第5个回答  2008-11-12
你是不是除了更新语句还有其它操作sql的语句???

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

...可为什么执行cmd.ExecuteNonQuery()返回的值是0?哪里出错了...
改成 string sql = " Update card1 set 姓名= '“ + name + "' where 标签号 = '" + cardname + "'";

...是否成功cmd.ExecuteNonQuery()的返回值都为0,怎么解决
1,先使用变量接收到受影响的行数,再返回变量的值 int count=cmd.ExecuteNonQuery();Response.Write(count);2,直接返回 Response.Write(cmd.ExecuteNonQuery());

用ExecuteNonQuery执行更新成功,但数据库里的值没变。。。
sqltxt的值为"update userinfo set username='yyyy', pwd='yyyy', sex='female', email='yy' where userid='32'"看样子是你的 sqltxt 写错了 执行是成功了但是没有找到 userid='32'的 所以程序没错 但没结果 一般这个ID是 自增的话 应该这样写 update userinfo set username='yyyy', pwd...

c# 插入数据库后ExecuteNonQuery()有返回值 但是数据表无更新
+ "')";SqlCommand cmd = new SqlCommand(sql, con);if(cmd.ExecuteNonQuery() > 0)MessageBox.Show("记录添加成功");else MessageBox.Show("记录添加失败");你遭遇的问题比较古怪,经过ToString() 比较 "1" 还是成立的,不然不会 提示成功,这说明cmd执行后成功的影响了一行,所以对此无法理解。

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

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

...i = cmd.ExecuteNonQuery(); i一直为0,为什么
查询的应该使用ExecuteReader,会返回你所要查询的结果。执行,如,删除,插入,更新 使用ExecuteNonQuery,若是执行成功就会返回正数。否则返回负数。

关于C#中ExecuteNonQuery()的问题
你说的是主键重复时候报错吧。这种情况一般在数据插入前判断数据表中是否有该数据。修改方法有两种:第一种是修改原来的process过程,在过程中插入数据前先判断有无数据,有数据则不插入;第二种是修改程序,在执行process过程前,执行一次有无数据的查询,通过结果来判断是否运行process过程。

关于ExecuteNonQuery()方法……
有可能是char等等),所以ExecuteScalar方法返回一个最基本的类型object,这个类型是所有类型的基类,换句话说:可以转换为任意类型。ExecuteNonQuery方法是用来执行insert、delete、update语句的,由于这些语句执行后只有一个结果:“影响了**行”,所以ExecuteNonQuery方法返回的是影响的行数(int)。

相似回答