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

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

    示例:

    01 /**
    02 * 存储过程
    03 *
    04 create procedure queryStuNameById
    05   (
    06    @stuId varchar(10),--输入参数
    07    @stuName varchar(10) output --输出参数
    08   )
    09 as
    10   select @stuName=stuName from stuInfo where stuId=@stuId
    11 *
    12 */
    01 using System;
    02 using System.Collections.Generic;
    03 using System.Text;
    04 using System.Data;
    05 using System.Data.SqlClient;
    06 namespace StoreProduceTest
    07 {
    08     public class Program
    09     {
    10  
    11         static void Main(string[] args)
    12         {
    13             Operater op = new Operater();
    14             string name = op.QueryStuNameById("1234");
    15             Console.WriteLine(string.Format("学号为1234的学生的姓名为{0}", name));
    16         }
    17     }
    18     public class Operater
    19     {
    20         private string ConStr = "server=.;database=User;uid=sa;pwd=1234";
    21         private SqlConnection sqlCon = null;
    22         private SqlCommand sqlComm = null;
    23         SqlDataReader dr = null;
    24         public string QueryStuNameById(string Id)
    25         {
    26             string name = "";
    27             try
    28             {
    29                 using (sqlCon = new SqlConnection(ConStr))
    30                 {
    31                     sqlCon.Open();
    32                     sqlComm = new SqlCommand("queryStuNameById", sqlCon);
    33                     //设置命令的类型为存储过程
    34                     sqlComm.CommandType = CommandType.StoredProcedure;
    35                     //设置参数
    36                     sqlComm.Parameters.Add("@stuId", SqlDbType.VarChar);
    37                     //注意输出参数要设置大小,否则size默认为0,
    38                     sqlComm.Parameters.Add("@stuName", SqlDbType.VarChar, 10);
    39                     //设置参数的类型为输出参数,默认情况下是输入,
    40                     sqlComm.Parameters["@stuName"].Direction = ParameterDirection.Output;
    41                     //为参数赋值
    42                     sqlComm.Parameters["@stuId"].Value = "1234";
    43                     //执行
    44                     sqlComm.ExecuteNonQuery();
    45                     //得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换
    46                     name = sqlComm.Parameters["@stuName"].Value.ToString();
    47                 }
    48             }
    49             catch (Exception ex)
    50             {
    51                 Console.WriteLine(ex.ToString());
    52             }
    53             return name;
    54         }
    55     }

  • 相关阅读:
    4.23Java自定义链表最终封装与完善
    4.23Java vector向量
    托管与非托管
    关于C#中的DLLImport (引)
    C#中通过DllImport使用 Win32 API(引)
    ASP.Net HttpHandler (转)
    C#WinForm获取本机网卡的型号,IP地址,子网掩码和网关
    ManagementObject
    asp.net Session详解(再转)
    C#优化字符串操作(引)
  • 原文地址:https://www.cnblogs.com/swarb/p/9924356.html
Copyright © 2011-2022 走看看