今天遇到个表态的问题!使用带事务的存储过程执行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#后台代码测试:

代码

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

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

  1. C# 调用存储过程操作 OUTPUT参数和Return返回值

    本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存 ...

  2. 记一次mysql数据库转储sql文件到另外一台电脑运行失败的解决办法

    记一次mysql数据库转储sql文件到另外一台电脑运行失败的解决办法 将转储的sql文件中创建触发器相关的语句剪切复制到另外的一份文本,保存重新运行sql文件,成功后在把之前剪切的语句复制过来在运行一 ...

  3. 批量修改/批量更新数据库某一个字段的值

    用字符串替换函数replace update 表名 set 字段名 = replace(字段名,'http://zencart.me','zencart.me')replace(url, 'aaa', ...

  4. iOS 把数据库文件打包到mainbundle中,查找不到路径的解决办法

    在开发中有时我们需要把数据库文件打包到我们的项目中,一般我们都是在外部用工具生成数据库文件,然后拉入项目中,但是我们在程序中查找改文件时,返回的路径总是nil 解决办法: 原因我们拉入其他资源文件(比 ...

  5. iOS 把数据库文件打包到mainbundle中,查找不到路径的解决办法;以及在删除bundle中文件的可行性

    在开发中有时我们需要把数据库文件打包到我们的项目中,一般我们都是在外部用工具生成数据库文件,然后拉入项目中,但是我们在程序中查找改文件时,返回的路径总是nil 解决办法: 原因我们拉入其他资源文件(比 ...

  6. 回车ajax显示,ajax返回值中有回车换行、空格的解决方法分享

    最近在写一个页面,用jquery ajax来实现判断,刚写好测试完全没有问题,过了两天发现出现问题,判断不成了.后来发现所有alert出来的返回值前面都会加若干换行和空格.(至今不明白,同一台电脑,同 ...

  7. mysql获取数据库账号密码报错errorCode 1045, state 28000——常见5种解决办法

    本地写了个一个项目后想上传到阿里云服务器(Windows)中,mysql+tomcat+jdk都已经配置好了,但就在项目运行时报错,显示如下 create connection error, url: ...

  8. php 返回 数组出现乱码,「锘」php返回json数组前面出现乱码“锘縶”解决办法 - 金橙教程网...

    锘 今天遇到一个坑爹的问题,使用cURL跨域请求接口返回JSON数组的时候出现乱码"锘縶"? 什么鬼东西 去除了半天bom没好使,真是坑爹,最后在返回接口前面加ob_clean() ...

  9. php fopen函数 返回值,php中fopen函数失败的解决方法

    php中fopen函数失败的解决方法 发布时间:2021-03-29 12:26:30 来源:亿速云 阅读:86 作者:小新 这篇文章将为大家详细讲解有关php中fopen函数失败的解决方法,小编觉得 ...

最新文章

  1. CSDN论坛上的一道算法题
  2. redhat 添加ssh端口_Linux修改SSH远程登录端口 --服务器安全篇
  3. Nginx configure
  4. apicloud链接访问本地数据库
  5. (附源码)计算机毕业设计ssm-高校科研信息管理系统
  6. 在VS中安装nuget离线包nupkg文件
  7. oracle同义词性能,ORACLE同义词总结 - welcome to open life - OSCHINA - 中文开源技术交流社区...
  8. 信号完整性(SI)电源完整性(PI)学习笔记(五)电容的物理基础
  9. 为什么C语言长盛不衰,永不会过时?
  10. 可视监控对讲、楼宇对讲等领域中的回声消除、音频降噪
  11. jquery中的各种动画效果
  12. 前端js通过图片路径,展示图片
  13. 软件测试-5-移动应用测试
  14. linux 定时开关机
  15. 使用xilinx最新工具vitis2019.2,定制zc702开发板linux系统
  16. 利用Hive进行数据分析
  17. [康宁]浅论亚里士多德对柏拉图“理念论”的批判与继承
  18. Arduino ESP8266 自定义IO组网页状态显示与控制-改版
  19. 如何用css排段落,标准网页中用CSS进行段落排版的方法
  20. 基于FFmpeg的视频播放器之七:音频解码

热门文章

  1. 2022-2028年中国抗菌玻璃行业市场研究及前瞻分析报告
  2. Solr部署如何启动
  3. 2022-2028全球与中国跨临界二氧化碳系统市场现状及未来发展趋势报告
  4. 2022-2028年中国光掩膜行业市场行情监测及未来前景规划报告
  5. Redis 难题突破,最经典 46 题含详细解析
  6. 力所能及的做些自己喜欢和有趣的事
  7. 每个人都应该有一个梦想
  8. 【VS实践】如何在vs中自动添加注释
  9. oss对象存储服务操作
  10. AI框架精要:设计思想