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
    {
        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;
            }
        }
    }


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mane_yao/archive/2010/04/22/5514186.aspx

  • 相关阅读:
    arcgis10.2转shp文件中文乱码问题解决方案
    Android Context作为参数传递this
    andriod inputbox
    andriod inputType
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)
    终于理解了什么是LGPL
    产品经理如何与强势的技术沟通? 技术比较有资历,会以技术无法实现等方面的原因拒绝处理产品提出的需求。 你们是否遇到这样的技术? 产品懂技术的话,是不是会好一些,因为可以和技术说“行话”了,并且产品懂技术就不会被忽悠了。
    Core Dump总结
    LIBRARY_PATH是编译时候用的,LD_LIBRARY_PATH是程序运行是使用的
    如何禁止C++默认成员函数
  • 原文地址:https://www.cnblogs.com/mane/p/1830008.html
Copyright © 2011-2022 走看看