.NET用使用存储过程获取输出参数的代码示例!

来源:互联网 发布:大学生兼职软件缺点 编辑:程序博客网 时间:2024/05/17 06:20

在网上也找到许多关于.NET中使用存储过程获取输出参数的代码,但怎么看怎么都是记不住,还是自己亲自实践一遍后再记录下来,这样才能记得住,必竟自己做过的东西是比较难忘记的!!!
    步骤如下:
    ①建立数据库logintest,在数据库中建立表User.

    向建立的表中添加几条测试数据.
    ②在数据库中建立存储过程:

SQL code  

USE[logintest]GO-- =============================================-- Author:        牛腩-- Create date: 2008-10-21 14:01-- Description:    通过传入的uid获取用户姓名-- =============================================SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATEPROCEDURE[dbo].[GetUNameById]@uidint,@namevarchar(50) outputASBEGIN    select@name=uname from[User]where uid=@uidEND

 ③在VS中建立一个测试页面ProcTest.aspx,在ProcTest.aspx.cs中导入命名空间

C# code

 using System.Data;

using System.Data.SqlClient;

 
④在Page_Load方法里写入如下代码:

C# code  

// 建立连接字符串,在正式项目中可放在web.config中        string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";        // 连接数据库        SqlConnection conn = new SqlConnection(connStr);        try        {            // 打开数据库连接            conn.Open();            // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称            SqlCommand cmd = new SqlCommand("GetUNameById", conn);            // 设置执行命令的方式为存储过程            cmd.CommandType = CommandType.StoredProcedure;            // 向命令对象添加存储过程所需要的参数            cmd.Parameters.Add("@uid", SqlDbType.Int);            // 设置要传入到存储过程的参数值            cmd.Parameters["@uid"].Value = 2;             // 添加存储过程中的输出参数,如果是字符型的必须定义长度            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);            // 设置参数为output输出参数            cmd.Parameters["@name"].Direction = ParameterDirection.Output;            // 执行存储过程            cmd.ExecuteReader();            // 获取执行存储过程后的输出参数            string name = cmd.Parameters["@name"].Value.ToString();            Response.Write(name);        }        catch (Exception ex)        {            Response.Write(ex.Message);            if (conn.State == ConnectionState.Open)            {                conn.Close();            }        }        finally        {            if (conn.State == ConnectionState.Open)            {                conn.Close();            }        } 


    运行ASPX页面,则能够看到执行存储过程后返回的结果!
   需要注意的是如果输出参数是varchar类型的话则必须定义长度,否则会出错,如果输出参数是数字型的话就不必定义长度了!
    下面是完整的ProcTest.aspx.cs的源码:

C# code  

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Data.SqlClient;publicpartialclass ProcTest : System.Web.UI.Page{    protectedvoid Page_Load(object sender, EventArgs e)    {        // 建立连接字符串,在正式项目中可放在web.config中        string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";        // 连接数据库        SqlConnection conn = new SqlConnection(connStr);        try        {            // 打开数据库连接            conn.Open();            // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称            SqlCommand cmd = new SqlCommand("GetUNameById", conn);            // 设置执行命令的方式为存储过程            cmd.CommandType = CommandType.StoredProcedure;            // 向命令对象添加存储过程所需要的参数            cmd.Parameters.Add("@uid", SqlDbType.Int);            // 设置要传入到存储过程的参数值            cmd.Parameters["@uid"].Value = 2;            // 添加存储过程中的输出参数            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);            // 设置参数为output输出参数            cmd.Parameters["@name"].Direction = ParameterDirection.Output;            // 执行存储过程            cmd.ExecuteReader();            // 获取执行存储过程后的输出参数            string name = cmd.Parameters["@name"].Value.ToString();            Response.Write(name);        }        catch (Exception ex)        {            Response.Write(ex.Message);            if (conn.State == ConnectionState.Open)            {                conn.Close();            }        }        finally        {            if (conn.State == ConnectionState.Open)            {                conn.Close();            }        }     }} 
原创粉丝点击