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

转载 2012年12月25日 17:02:56

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

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

SQL code  

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

 ③在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();
            }
        } 
    }
} 

ASP.net:调用存储过程 -- 代码取不到输出(Output)参数值 - 因ExecuteReader不当使用

存储过程的输出参数的使用,相信大家早晚多少都(会)用到过。不知用到过朋友,有没有遇到在程序中“咋就”取不到想要的输出值的情况;始终是null值。昨天本人就遇到了,也可能是用的不多,这种情况也是第一次遇...

asp.net调用输出参数存储过程

  • 2011年06月29日 11:38
  • 3KB
  • 下载

asp.net获取存储过程的输出参数

这个其实很简单,只是学习到了就作个记录,也给不知道的人留个方便。 一、假设存储过程如下 --region [dbo].[InsertArchive] ----------------...

ASP.NET中调用存储过程带(输入输出)参数和返回值例子

有些初学者在调用存储过程时容易出现一些错误,下面我就不同的返回参数而言举个用户登录常用的例子做一些简单的讨论:(由简单--->>深入) 创建数据库:(Student) 创建用户表:(Users) ...

asp.net 操作带输入输出参数的分页存储过程(四)

asp.net 操作带输入输出参数的分页存储过程(四)
  • Mellee
  • Mellee
  • 2017年06月30日 23:52
  • 60

asp.net 调用带有输出参数的存储过程

前台jqurey

asp.net 获得存储过程 返回值,影响行数,输出参数 output 用法

ALTER proc [dbo].[InsertUser] (@userID int output , @userName varchar(50), @password varchar(50), @...

ASP.NET中调用存储过程带(输入/输出)参数和返回值的一些常用的例子

                                                                                     ...

ADO.NET存储过程参数生成-SQL版

  • 2008年08月04日 08:51
  • 163KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET用使用存储过程获取输出参数的代码示例!
举报原因:
原因补充:

(最多只允许输入30个字)