C#调用SQL存储过程示例演示

开发 后端
本文介绍了C#中调用SQL存储过程,带输入输出参数的例子。

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

C#调用SQL存储过程示例演示

/**  
* 存储过程  
*   
 create procedure queryStuNameById  
  (  
   @stuId varchar(10),--输入参数  
   @stuName varchar(10) output --输出参数  
  )  
 as 
  select @stuName=stuName from stuInfo where stuId=@stuId  
*  
*/  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
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;  
        }  
    }  
}  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.

C#调用SQL存储过程就给大家演示到这里,希望对大家有所帮助。

 

【编辑推荐】

  1. C# Thread类的应 用
  2. C#线程:BeginInvoke和EndInvoke方法
  3. 学习C#:Attribute与Property
  4. C#编码标准66条
  5. C#委托事件及自定义事件的处理
责任编辑:book05 来源: cnblogs
相关推荐

2011-08-22 10:15:39

数据库存储过程

2009-08-17 18:30:29

C# SQL Serv

2010-04-16 11:22:08

Oracle存储过程

2011-08-16 16:59:58

PLSQL分页存储过程Java

2010-07-08 17:15:04

SQL Server存

2009-08-13 17:58:34

C#存储过程

2009-08-04 10:20:22

C#源码存储过程

2010-09-09 09:49:18

SQL函数存储过程

2009-08-04 10:29:06

在C#中使用存储过程

2010-11-12 09:46:55

Sql Server存

2009-08-13 18:26:35

C#继承构造函数

2009-10-23 11:31:05

CLR Via C#调

2009-08-07 03:47:00

2011-08-12 11:22:53

Oracle存储过程Java

2010-01-22 16:48:54

VB.NET调用SQL

2011-06-17 17:37:16

JavaSQL Server

2012-05-10 11:17:23

JavaSQL Server

2009-08-18 10:17:25

C#枚举类型

2010-10-09 17:08:15

MySQL存储过程

2009-09-01 18:29:10

C#继承C#多态
点赞
收藏

51CTO技术栈公众号