使用存储过程更新数据库!成功了但是返回值为 -1 的变态问题的解决办法!

news/2024/9/20 11:41:23

今天遇到个表态的问题!使用带事务的存储过程执行sql语句,看数据库里面插入更新都正常! 但是返回值一直为-1! 头那个大哦!先贴2个存储过程吧!看大侠们能否找到问题的存在

USE [My_DB]
GO
/****** Object: StoredProcedure [dbo].[UpdatePointByUser] Script Date: 03/29/2010 16:06:23 ******/
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
-- =============================================
-- Author:jinho
-- Create date: 2010年3月22日16:13:06
-- Description: 修改用户的点数 [Point]
-- =============================================
CREATE PROCEDURE [dbo].[UpdatePointByUser]
  @point int = 0,
  @uid int =0
AS BEGIN
   SET NOCOUNT ON;
   declare @error int ;
   set @error = 0;
   begin tran
        update UserInfo set Point = Point + @point where Id = @uid;
        set @error = @error+@@error ;
        if(@error=0)
            commit tran ;
        else
            rollback tran ;
   END
//
USE [My_DB]
GO
/****** Object: StoredProcedure [dbo].[AddAnnouncement] Script Date: 03/29/2010 15:43:51 ******/
SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddAnnouncement]
    @ATitle nvarchar(max) ='',
    @ACreateTime datetime ='',
    @AWhere nvarchar(max) = '',
    @AUserId int =0,
    @point int =0
AS BEGIN
    SET NOCOUNT ON;
    declare @error int ;
    set @error = 0;
    begin tran
        insert into Announcements values(@ATitle,@ACreateTime,@AWhere,@AUserId);
        set @error = @error+@@error;
        exec UpdatePointByUser @point,@AUserId
        set @error = @error+@@error;
        if(@error=0) commit tran ;
        else rollback tran;
END

-- Test
declare @rev int
exec [AddAnnouncement] 'mytest','2008-05-09','ChengDu',13,100
print @rev;
print @@ROWCOUNT

这里测试 @rev,@@ROWCOUNT 都为0;

 

C#后台代码测试:

ContractedBlock.gifExpandedBlockStart.gif代码
1 public bool AddAnnouncement(Model announcement)
2 {
3 SqlConnection con = null;
4 SqlCommand cmd = null;
5 int row = 0;
6 SqlParameter[] paras = {
7 new SqlParameter("@ATitle", announcement.ATitle),
8 new SqlParameter("@ACreateTime", announcement.ACreateTime),
9 new SqlParameter("@AWhere", announcement.AWhere),
10 new SqlParameter("@AUserId", announcement.AUserId),
11 new SqlParameter("@point", 1) };
12 try
13 {
14 using (con = new SqlConnection(DBHelper.DefaultConnectionString))
15 {
16 con.Open();
17 using (cmd = new SqlCommand("[AddAnnouncement]", con))
18 {
19 cmd.CommandType = CommandType.StoredProcedure;
20 cmd.Parameters.AddRange(paras);
21 row = cmd.ExecuteNonQuery();
22 return row > 0;
23 }
24 }
25 }
26 catch (Exception ex) { throw ex; }
27 finally
28 {
29 if (con != null) con.Close();
30 }
31 }

上面代码的Row返回为-1! 但是我去数据库看,执行存储过程的两条语句都成功了!
嘿嘿:注意看到上面的存储过程的“SET NOCOUNT ON;”这句代码!就是他在作怪!他的意思为 “开启设置不影响的行数”!
你只要 把SET NOCOUNT OFF即可! 当然也可以不写!因为默认为OFF!如果你看到默认为ON时请修改为OFF!
OK![也许这个问题本身不变态,只是我的技术不到位,:)]

上面代码的Row返回为-1! 但是我去数据库看,执行存储过程的两条语句都成功了! 嘿嘿:注意看到上面的存储过程的“SET NOCOUNT ON;”这句代码!就是他在作怪!他的意思为 “开启设置不影响的行数”!你只要 把SET NOCOUNT OFF即可! 当然也可以不写!因为默认为OFF!如果你看到默认为ON时请修改为OFF! OK!

 

转载于:https://www.cnblogs.com/jinho/archive/2010/03/29/1700149.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/17776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

卷积神经网络基础:(6)卷积神经网络原理

目录 1、卷积网络与传统网络的区别 2、整体架构 3、卷积操作​ 4、卷积涉及的参数 5、卷积计算公式: 6、卷积参数中的重要特点 7、池化层作用 8、整体网络架构 9、特征图变化 10、感受野 1、卷积网络与传统网络的区别 上图中左边是NN传统网络,右边…

使用Python,matplotlib绘制Nomogram列线图

使用Python,matplotlib绘制Nomogram列线图1. 效果图2. 源码参考这篇博客将介绍如何使用Python,matplotlib绘制列线图。写这篇博客源于博友的提问 期望使用matplotlib绘制列线图如下,翻官网文档,尝试后终于绘制出来了。 1. 效果图…

卷积神经网络基础:(7)经典的网络架构

目录 经典网络架构: (1)Alexnet: (2)Vgg: (3)Resnet 经典网络架构: (1)Alexnet: 12年的经典之作,他是一个…

Windows安装用于OCR的Tesseract及使用命令行参数进行OCR

Windows安装用于OCR的Tesseract及使用命令行参数进行OCR1. 效果图2. Tesseract 安装及验证参考这篇博客将介绍如何安装和使用光学字符识别(OCR Optical Character Recognition)的Tesseract库,并使用命令行对图像中的字符进行识别;…

卷积神经网络基础:(8)递归神经网络RNN

1、RNN网络由来 RNN:Recurrent Neural Network。递归神经网络只是在传统神经网络上进行一个改进而已。 正常流程是:输入---->隐层---->输出 (数据来了经过隐层最终得到输出就完事了) 当我们在使用递归神经网络的时候一些限制,现在我拿…

Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点

Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点 1. 效果图2. 原理2.1 绘制象限图步骤2.1 添加文字到图表3. 源码参考这篇博客将介绍如何使用matplotlib绘制象限图,写这篇博客源于博友的提问。 首先pyechart貌似不支持绘制象限图。pyecharts支持的象形柱图demo与想要…

Facebook 与 Google 正在主导在线身份验证市场

OpenID 公司 JanRain 的一项研究发现,用户在第三方网站进行身份验证时,最喜欢使用 Google 和 Facebook 的身份验证服务。Facebook 的验证服务 在媒体, 零售,技术等领域略微领先,而 JanRain 的17万份客户数据显示&#…

PyTorch框架:(1)基本处理操作

目录 1、PyTorch框架介绍 2、安装Pytorch 2.1、CPU版本的安装命令: 2.2、GPU版本的安装命令: 2.2.1、安装CUDA 3、基本使用方法 4、Pytorch中的自动求导机制 4.1、例子: ​ 4.2、做一个线性回归试试水 4.2.1、CPU训练版本 4.2.1、GPU…