• C#中调用SQL存储过程(带输入输出参数的例子)


     首先建立存储过程,默认为输入参数,输出参数后面要加output

        /**

            存储过程         

            create procedure queryStuNameById

            @stuId varchar(10),-- 输入参数

            @stuName varchar(10) output -- 输出参数

                as

            select @stuName=stuName from stuInfo where stuId=@stuId         

         */

    Command 对象上设定输出参数类型,大小后,还要指明参数为输出参数。

    // 注意输出参数要设置大小, 否则size 默认为0,

    sqlComm.Parameters.Add("@stuName" , SqlDbType .VarChar, 10);

    // 设置参数的类型为输出参数, 默认情况下是输入,

    sqlComm.Parameters["@stuName" ].Direction = ParameterDirection .Output;

    执行完命令后,还要通过Command 对象获得输出参数的值。

    name = sqlComm.Parameters["@stuName" ].Value.ToString();

    完整代码如下:

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.SqlClient;

     

    namespace StoreProduceTest

    {

        public class Program

        {

            static void Main(string [] args)

            {

                Operater op = new Operater ();

                string name = op.QueryStuNameById("1234" );

     

                Console .WriteLine(string .Format(" 学号为1234 的学生的姓名为{0}" , name));

            }

     

     

        }

     

        public class Operater

        {

            private string ConStr = "server=.;database=User;uid=sa;pwd=1234" ;

            private SqlConnection sqlCon = null ;

            private SqlCommand sqlComm = null ;

            SqlDataReader dr = null ;

     

            public string 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;

            }

        }

    }

  • 相关阅读:
    java 实现Queue
    java 实现stack
    为什么现货白银/现货原油的报价每个交易所都不一样?
    现货交易入门之常用术语
    现货操盘手精髓语录
    现货电子交易中实物交割的概念和作用?
    关于ios对rtsp格式的流媒体支持的一些官方说明
    ProgressBar的Indeterminate属性
    安卓适配问题
    推送原理
  • 原文地址:https://www.cnblogs.com/zhhe0800/p/2113425.html
Copyright © 2020-2023  润新知