2009-08-22 14:06 by chenkai, 544 阅读, 1 评论, 收藏, 编辑 Asp.net中利用ExecuteNonQuery()方法执行sql语句,并返回影响行数,注意sql语句针对的是增删改三个操作,返回影响行数总是-1:在MSDN上这样解释如果不是同一类型(增删改)的sql语句 执行操作返回-1.
当前存储过程如下:
1
--
创建个人插入Proc
2
--
分开参数实现
3
create
proc
AddPersion_Proc
4
@name
varchar
(
80
),
5
@password
varchar
(
20
),
6
@realname
varchar
(
20
),
7
@contractadd
varchar
(
100
),
8
@phonenum
varchar
(
24
),
9
@email
varchar
(
50
),
10
@utypeid
varchar
(
50
)
--
用户类型
11
as
12
13
set
nocount
on
--
不返回影响行数
14
15
declare
@gettypeid
int
16
17
select
@gettypeid
=
id
from
usertype
where
utype
=
@utypeid
18
if
(
@utypeid
=
'
个人用户
'
)
19
insert
into
userinfor (typeid,username,password,realname,email,address,telenum)
20
values
(
@gettypeid
,
@name
,
@password
,
@realname
,
@email
,
@contractadd
,
@phonenum
)
21
22
--
End AddPersion_proc

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

执行结果返回到程序总是显示为-1,虽然返回为-1但数据仍然能够插入,数据库中添加一条记录
其 实问题关键是在这:数据库能够在为我们执行增删改操作并返回影响行数前提是: 默认的 Set Nocount off 是开启的,上面纯粹出于个人习惯直接写了 set nocount on 这样导致无法返回整个存储过程执行后的结果,直接删除set nocount on使用默认情况的下设置,即能返回显示影响的行数.
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2012/10/08/2715153.html
,如需转载请自行联系原作者