zoukankan      html  css  js  c++  java
  • 【C#】调用SQL存储过程(带输入输出参数的例子)

    理论:

    下面的CmdObj.是定义的SqlCommand对象

    1、获得存储过程中return语句返回的整个存储过程函数的返回值:

    //获得存储过程return的值,定义一个参数,指明其作用是接受return的值     CmdObj.Parameters.Add("RETURN_VALUE", SqlDbType.Int).Direction =ParameterDirection.ReturnValue; 通过获取该参数的方式最终获得return返回的值 int reValue = int.Parse(CmdObj.Parameters["RETURN_VALUE"].Value.ToString());

    2、获得存储过程输出参数的值:

    定义sql的参数,指定类型是输出 CmdObj.Parameters.Add("@outValue", SqlDbType.VarChar).Direction =ParameterDirection.Output;

    获得输出参数的值 string outValue = CmdObj.Parameters["@outValue"].Value.ToString();

    总结,关键地方就是指明参数的Direction 属性,使用ParameterDirection来指定,可以指定4种类型, 输入, 输出, 既是输入又是输出, 接受return

    =====================================================================

    示例:

    * 存储过程 * 
    create procedure queryStuNameById   
    (    
      @stuId varchar(10),--输入参数    
      @stuName varchar(10) output --输出参数   ) 
    as   
      select @stuName=stuName from stuInfo where stuId=@stuId 
    * */
    复制代码

     using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    namespace StoreProduceTest
    {
       
    publicclass Program
        {

           
    staticvoid Main(string[] args)
            {
                Operater op
    =new Operater();
               
    string name = op.QueryStuNameById("1234");
                Console.WriteLine(
    string.Format("学号为1234的学生的姓名为{0}", name));
            }
        }
       
    publicclass Operater
        {
           
    privatestring ConStr ="server=.;database=User;uid=sa;pwd=1234";
           
    private SqlConnection sqlCon =null;
           
    private SqlCommand sqlComm =null;
            SqlDataReader dr
    =null;
           
    publicstring QueryStuNameById(string Id)
            {
               
    string name ="";
               
    try
                {
                   
    using (sqlCon =new SqlConnection(ConStr))
                    {
                        sqlCon.Open();
                        sqlComm
    =new SqlCommand("queryStuNameById", sqlCon);
                       
    //设置命令的类型为存储过程
                        sqlComm.CommandType = CommandType.StoredProcedure;
                       
    //设置参数
                        sqlComm.Parameters.Add("@stuId", SqlDbType.VarChar);
                       
    //注意输出参数要设置大小,否则size默认为0,
                        sqlComm.Parameters.Add("@stuName", SqlDbType.VarChar, 10);
                       
    //设置参数的类型为输出参数,默认情况下是输入,
                        sqlComm.Parameters["@stuName"].Direction = ParameterDirection.Output;
                       
    //为参数赋值
                        sqlComm.Parameters["@stuId"].Value ="1234";
                       
    //执行
                        sqlComm.ExecuteNonQuery();
                       
    //得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换
                        name = sqlComm.Parameters["@stuName"].Value.ToString();
                    }
                }
               
    catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
               
    return name;
            }
        }
    }

  • 相关阅读:
    CSS 导航栏
    CSS 伪元素
    CSS 伪类(Pseudo-classes)
    CSS 组合选择符
    CSS Positioning(定位)
    C# 控制台程序 托盘图标 事件响应
    安装GIT,集成到Powershell中
    Tomcat调优
    CentOS7安装配置redis5集群
    redis.conf配置详细解析
  • 原文地址:https://www.cnblogs.com/wywnet/p/3111897.html
Copyright © 2011-2022 走看看