说明:很多时候,在DBHelper函数中,都能看到以下的代码:

 cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, ,
ParameterDirection.ReturnValue, false, , ,
string.Empty, DataRowVersion.Default, null));

其起的作用是:当调用的存储过程中如果有Return @xxx 就会把这个值返回给这个ReturnValue 参数。这样你在代码里就可以调用这个值了。

例子:

数据库:

操作的表:tb_user

在数据库中添加一个一个存储过程:

create proc Test
@id int,@name varchar(20),@pwd varchar(20)
as
begin
declare @count int
insert into tb_login(id,name,pwd) values(@id,@name,@pwd)
select @count = (select count(*) from tb_login)
return @count
end
go

后台代码:

数据库操作

【Class】DataBase:

数据库库连接自己写了

 /// <summary>
/// 执行命令
/// </summary>
/// <param name="procName">命令文本</param>
/// <param name="prams">参数对象</param>
/// <returns></returns>
public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
//得到成功执行的返回值
return (int)cmd.Parameters["ReturnValue"].Value;
}
/// <summary>
/// 创建一个SqlCommand对象以此来执行命令文本
/// </summary>
/// <param name="procName">命令文本</param>
/// <param name="prams"命令文本所需参数</param>
/// <returns>返回SqlCommand对象</returns>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, conn);
//cmd.CommandType = CommandType.Text;// 执行类型:命令文本
cmd.CommandType = CommandType.StoredProcedure; //执行类型:存储过程 //一次把参数传入命令文本
if (prams != null)
{
foreach (SqlParameter param in prams)
{
cmd.Parameters.Add(param);
}
} //加入返回参数
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, ,
ParameterDirection.ReturnValue, false, , ,
string.Empty, DataRowVersion.Default, null)); return cmd;
}

实体类:

Class User

 public class User
{
private int id;
private string name;
private string pwd; public string Pwd
{
get { return pwd; }
set { pwd = value; }
} public string Name
{
get { return name; }
set { name = value; }
} public int Id
{
get { return id; }
set { id = value; }
}
}

测试数据库类:

Class TestDataBase

public class TestDataBase
{
DataBase db = new DataBase();
public int AddUser(User newUser)
{
SqlParameter[] prams = {
db.MakeInParam("@id",SqlDbType.Int,,newUser.Id),
db.MakeInParam("@name",SqlDbType.VarChar,,newUser.Name),
db.MakeInParam("@pwd",SqlDbType.VarChar,,newUser.Pwd)
}; return db.RunProc("Test", prams);
} }

前台:

Test.aspx:

<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="label1" runat="server"></asp:Label>
</div>
</form>
</body>

Test.aspx.cs:

public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
User newUser = new User();
newUser.Id = ;
newUser.Name = "kkK";
newUser.Pwd = "kkk"; TestDataBase tdb = new TestDataBase();
int num = tdb.AddUser(newUser); label1.Text = num.ToString();
}
}
}

执行前,查看数据库:

执行后:

返回结果:

其他的例子:

摘自:http://bbs.csdn.net/topics/330002062

在更新数据表数据库时,可以通过返回值,确定更新是否成功。

通常的用法:

c# code:

SqlConnection conn = CreateSqlConnection();

            SqlCommand cmd = new SqlCommand("sp_InsertInstitute", conn);

            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameter[] parms = new SqlParameter[]{

                new SqlParameter("@InstituteNO",""),

                new SqlParameter("@InstituteName","计算机学院"),

                new SqlParameter("@return",SqlDbType.Int)

            };

            foreach (SqlParameter parm in parms)

            {

                cmd.Parameters.Add(parm);

            }

            cmd.Parameters["@return"].Direction = ParameterDirection.ReturnValue;

            try

            {

                cmd.ExecuteScalar();

            }

            catch (SqlException ex)

            {

                Console.WriteLine("操作失败!" + ex.Message);

                return;

            }

            finally

            {

                conn.Close();

            }

            string strTmp = cmd.Parameters["@return"].Value.ToString();

            switch (strTmp)

            {

                case "":

                    Console.WriteLine("添加成功");

                    break;

                case "":

                    Console.WriteLine("数据有重复");

                    break;

                case "":

                    Console.WriteLine("数据操作失败");

                    break;

                case "":

                    Console.WriteLine("插入数据为空");

                    break;

            }

            Console.ReadKey();

sql code:

CREATE PROCEDURE [dbo].[sp_InsertHotspot]

@hotTime int,

@hotContent xml

AS

BEGIN TRANSACTION

    INSERT INTO t_Hotspot([iHotTime],[tHotContent]

    ) VALUES(@hotTime ,@hotContent )

    IF @@ERROR <> 0

    BEGIN

       ROLLBACK TRANSACTION

       RETURN 1--返回表示操作失败

    END

    ELSE

    BEGIN

       COMMIT TRANSACTION

       RETURN 0--返回表示操作成功

    END

ASP.NET 加入返回参数ReturnValue的更多相关文章

  1. asp.net中URL参数传值中文乱码的三种解决办法

    在做Asp.Net开发的时候,参数传递中文时,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考: 解决的方法一般有3种: 1.设置web.config文件 <system.web ...

  2. Parameter Binding in ASP.NET Web API(参数绑定)

    Parameter Binding in ASP.NET Web API(参数绑定) 导航 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnbl ...

  3. Asp获取网址相关参数大全

      Asp获取网址相关参数大全 代码一:[获取地址中的文件名,不包含扩展名]<%dim Url,FileName,File Url=split(request.servervariables(& ...

  4. 自动化CodeReview - ASP.NET Core请求参数验证

    自动化CodeReview系列目录 自动化CodeReview - ASP.NET Core依赖注入 自动化CodeReview - ASP.NET Core请求参数验证 参数验证实现 在做服务端开发 ...

  5. Asp.Net Mvc 返回类型总结

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. 对接第三方支付接口-获取http中的返回参数

    这几天对接第三方支付接口,在回调通知里获取返回参数,有一家返回的json格式,请求参数可以从标准输入流中获取. //1.解析参数 , 读取请求内容 BufferedReader br; String ...

  7. 如何将ASP.NET MVC所有参数均自动设置为默认

    今天看到CSDN上有个问题觉得有点意思:"可不可以ASP.NET MVC所有参数均自动设置为默认" public class HomeController : Controller ...

  8. 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...

  9. ASP.NET MVC传送参数至服务端

    ASP.NET MVC传送参数至服务端,前端与服务端的写法,你可以参考与采用适合你的需求的.当你只传递一两个参数也许觉得没有什么,如果一个方法中带的参数多的话,可以考虑model,前端可以考虑对象进行 ...

随机推荐

  1. html在线编辑器汇总

    1. TinyMCE 免费,开源,轻量的在线编辑器,基于 JavaScript,高度可定制,跨平台. 2. FCKEditor 免费,开源,用户量庞大的在线编辑器,有良好的社区支持. 3. YUI E ...

  2. 【BZOJ】【3668】【NOI2014】起床困难综合症

    贪心 位运算的题……基本都是按位来做的?... 从高位到低位,贪心来搞就可以了…… 这都算不上是数位DP吧= = /****************************************** ...

  3. 依赖注入 DI 控制反转 IOC MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. SVN jsvnadmin 安装与基本使用

    1. jsvnadmin  介绍 https://code.google.com/p/jsvnadmin/ Svn Admin是一个Java开发的管理Svn服务器的项目用户的web应用.安装好Svn服 ...

  5. Javascript开发笔记:不完整的继承

    Javascript的继承和标准的oop继承有很大的区别,Javascript的继承是采用原型链的技术,每个类都会将“成员变量”和“成员函数”放到 prototype 上,Js++都过supercla ...

  6. Cognos定时Email发送报表数据功能

    1:进入 IBM Cognos Configuration-Data Access-Notification 2:设置如下(注意一定要是smtp服务,端口25,我这里是用了腾讯邮箱的smtp服务) 当 ...

  7. Database Setup

    Database Setup This library has been developed so that you can use any type of backend storage; rela ...

  8. jquery设置按钮disabled

    通常我们设置disabled属性会用attr和removeAttr,但是今天我们不讨论这个方式 我们讨论是的prop jQuery的定义是:获取在匹配的元素集中的第一个元素的属性值. 随着一些内置属性 ...

  9. (算法)判断字符串中是否包含HelloWorld

    题目: 给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”. 思路 ...

  10. 如何为Android上的产品设计一款合适的图标

    如 果你已经完成了你的app,你一定会马上向其它人宣布这件事情.但是你需要注意一个很重要的问题,那就是app的图标.你的图标可能在项目启动之 前就已经设计好了,但我不喜欢这样,如果app没有完成实际上 ...