Asp.net中利用ExecuteNonQuery()执行存储过程返回-1解决方案
2009-08-22 14:06 chenkai 阅读(2576) 评论(1) 编辑 收藏 举报Asp.net中利用ExecuteNonQuery()方法执行sql语句,并返回影响行数,注意sql语句针对的是增删改三个操作,返回影响行数总是-1:在MSDN上这样解释如果不是同一类型(增删改)的sql语句 执行操作返回-1.
当前存储过程如下:
其实问题关键是在这:数据库能够在为我们执行增删改操作并返回影响行数前提是: 默认的 Set Nocount off 是开启的,上面纯粹出于个人习惯直接写了 set nocount on 这样导致无法返回整个存储过程执行后的结果,直接删除set nocount on使用默认情况的下设置,即能返回显示影响的行数.
当前存储过程如下:
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
执行结果返回到程序总是显示为-1,虽然返回为-1但数据仍然能够插入,数据库中添加一条记录
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

其实问题关键是在这:数据库能够在为我们执行增删改操作并返回影响行数前提是: 默认的 Set Nocount off 是开启的,上面纯粹出于个人习惯直接写了 set nocount on 这样导致无法返回整个存储过程执行后的结果,直接删除set nocount on使用默认情况的下设置,即能返回显示影响的行数.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架