您的位置:首页 > 数据库

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

2012-12-06 15:54 316 查看
下面的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

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

示例:

view source

print?

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
*/
view source

print?

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
}
56
}






http://xiaohuochai.net/post-116.html


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: