ASP.NET 加入返回参数ReturnValue

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

 cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4,

                ParameterDirection.ReturnValue, false, 0, 0,

                string.Empty, DataRowVersion.Default, null));

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

例子:

数据库:

操作的表:tb_user

ASP.NET 加入返回参数ReturnValue

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

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, 4,

                ParameterDirection.ReturnValue, false, 0, 0,

                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,100,newUser.Id),

                db.MakeInParam("@name",SqlDbType.VarChar,20,newUser.Name),

                db.MakeInParam("@pwd",SqlDbType.VarChar,20,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 = 3;

                newUser.Name = "kkK";

                newUser.Pwd = "kkk";



                TestDataBase tdb = new TestDataBase();

                int num = tdb.AddUser(newUser);



                label1.Text = num.ToString();

            }

        }

    }

 

执行前,查看数据库:

ASP.NET 加入返回参数ReturnValue

 执行后:

ASP.NET 加入返回参数ReturnValue

返回结果:

ASP.NET 加入返回参数ReturnValue

 

 其他的例子:

摘自: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[3]{



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



                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 "0":



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



                    break;



                case "1":



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



                    break;



                case "2":



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



                    break;



                case "3":



                    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)