关于executenonquery的信息

http://www.itjxue.com  2023-01-25 13:27  来源:未知  点击次数: 

如何调用ExecuteNonQuery返回存储过程的值

ExecuteNonQuery 返回的是最后一条SQL语句影响的行数。

如果你想得到存储过程中的Return,那存储过程中,你必须写Return 0或Return 1。 Return 只能是int

另外还有输出参数,可以是任意类型。

概念别搞混了。

假设有存储过程如下:

CREATE PROCEDURE [dbo].[sp_add]

(

@x int,

@y int,

@r int output

)

AS

BEGIN

SET NOCOUNT ON;

set @r = @x + @y;

return 0;

END

调用方式:

using (SqlConnection conn = new SqlConnection())

{

conn.ConnectionString = xxxx;

conn.Open();

using (SqlCommand cmd = conn.CreateCommand())

{

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText = "sp_add";

SqlParameter[] ps = new SqlParameter[4];

ps[0] = new SqlParameter("@x", 1);

ps[1] = new SqlParameter("@y", 2);

ps[2] = new SqlParameter("@r", SqlDbType.Int);

ps[2].Direction = ParameterDirection.Output;

ps[3] = new SqlParameter();

ps[3].SqlDbType = SqlDbType.Int;

ps[3].Direction = ParameterDirection.ReturnValue;

cmd.Parameters.AddRange(ps);

int r = cmd.ExecuteNonQuery();

Console.WriteLine(string.Format("@r={0},存储过程返回:{1},ExecuteNonQuery返回:{2}", ps[2].Value, ps[3].Value, r));

}

}

看一下都返回了此什么。

ExecuteNonQuery()怎么用

报错是由于执行cmd.ExecuteNonQuery()这个错误的,在这里就有执行错误,系统就会将调试终止,提示你出错,后边的代码根本没有执行,怎么会实现你的报错呢,你这样不能够抓取系统报错,一般都是用try catch来抓取报错的

try

{

conn.Open();

if(cmd.ExecuteNonQuery()==1)

label2.Text="数据录入成功";

}

catch

{

lable2.Text="数据录入失败";

}

执行try中代码出现错误都会执行catch{}中的代码,你原本那样抓取系统报错不可取

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()方法。

“cmd.ExecuteNonQuery()”是什么意思?

这是关于?Sql?语句中的语句,cmd.ExecuteNonQuery?会有一个返回值,将值赋值给整型?count,返回受影响的行数值。

执行SQL句,返回受影响行数(判断执行SQL句是否成功)。

sql 语句是对数据库进行操作的一种语言。结构化查询语言简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

创建数据库-CREATE DATABASE database-name。

删除数据库-drop database dbname。

创建新表-create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)。

删除新表-drop table tabname。

增加一个列-Alter table tabname add column col type。

添加主键-Alter table tabname add primary key(col)。

删除主键-Alter table tabname drop primary key(col)。

(责任编辑:IT教学网)

更多

推荐Flash动画文章