C# 调用sql 2000存储过程

简介:

      今天又有朋友问起关于c#调用存储过程的问题,发现自己好久没用,竟然也忘得差不多了。还好以前在其它博客里也有写过,结果。。。自然是解决了。

     本来想直接把以前那片拿过来的,但是感觉还是重新写一下让自己印象深刻点。

     调试环境:VS.NET 2005,SQL 2000,WINDOWS XP sp2。

     语言:C#

     调用带输参数的存储过程

     首先自然是在查询分析器里创建一个存储过程喽~~   如下所示:

create   proc  proc_1
@uid   int ,
@pwd   varchar ( 255 )
as
select  UserName  from  users  where  uid  =   @uid   and  PassWord  =   @pwd
go
 

     接下来我们就来看下如何在VS 2005中使用C#调用这个存储过程。

     方法一:

复制代码
SqlConnection conn  =   new  SqlConnection( " server=(local);database=sql1;uid=sa;pwd= " );
conn.Open();
// 打开数据库连接
SqlCommand cmd  =   new  SqlCommand( " exec proc_1 @uid=1,@pwd=admin " , conn); // Command中写调用存储过程的语句
// 大家应该看出来了和直接在查询分析器中执行很类似,“exec 存储过程名 @参数1=参数值,@参数2=参数值”
SqlDataReader sdr  =  cmd.ExecuteReader(); // 执行存储过程
while  (sdr.Read())
{
    Response.Write(sdr[
" UserName " ].ToString()); // 输出查询到的值
}
sdr.Close();
conn.Close();
复制代码

     方法二:

复制代码
SqlConnection conn  =   new  SqlConnection( " server=(local);database=sql1;uid=sa;pwd= " );
conn.Open();
// 打开数据库连接
SqlCommand cmd  =   new  SqlCommand( " proc_1 " , conn); // 存储过程名
cmd.CommandType  =  CommandType.StoredProcedure; // 设置命令类型为存储过程
SqlParameter[] param  =   new  SqlParameter[]{
   
new  SqlParameter( " uid " , SqlDbType.Int,  4 ),
   
new  SqlParameter( " pwd " , SqlDbType.VarChar, 255 ), 
};
// 定义参数,这些是存储过程中要调用的参数,也可以通过直接使用cmd.AddWithValue方法添加参数
param[ 0 ].Value  =   1 ; // 给参数赋值
param[ 1 ].Value  =   " admin " ;
cmd.Parameters.AddRange(param);
// 一定要记得将刚定义的参数添加到cmd的参数中,不然前面的参数就白弄了。
string  sname  = ( string )cmd.ExecuteScalar(); // 如果存储过程返回的是单个值,我们可以直接这样取出所要的值
Response.Write(sname);
sdr.Close();
conn.Close();
复制代码

 

     调用带输参数的存储过程

     上面所讲的只是调用输入参数的存储过程,下面大概讲一下如何调用有输出参数的存储过程。

     首先,我们先对之前的存储过程修改一下,如下所示:

复制代码
create   proc  proc_1
@uid   int ,
@pwd   varchar ( 255 ),
@UserName   varchar ( 255 ) output  -- 这里我们增加一个输出变量,记得加上output
as
select   @UserName = UserName  from  users  where  uid  =   @uid   and  PassWord  =   @pwd
go

-- 以下是在查询分析器中调用的方法
declare   @n   varchar ( 255 -- 声明一个变量用来传递参数
exec  proc_1  1 ,admin, @n  output  -- 注,要标记为output变量
print   @n
复制代码

     下面我们看看在VS.NET 中的调用方式:

复制代码
SqlConnection conn  =   new  SqlConnection( " server=(local);database=sql1;uid=sa;pwd= " );
conn.Open();
SqlCommand cmd 
=   new  SqlCommand( " proc_1 " , conn);
cmd.CommandType 
=  CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(
" uid " 1 );
cmd.Parameters.AddWithValue(
" pwd " " admin " );
cmd.Parameters.Add(
" username " , SqlDbType.VarChar,  255 );
cmd.Parameters[
" username " ].Direction  =  ParameterDirection.Output; // 设置参数为输出参数
cmd.ExecuteNonQuery();
string  sname  =  ( string )cmd.Parameters[ " username " ].Value; // 获取输出参数的值
Response.Write(sname);
conn.Close();
复制代码

 

     这样,便很简单的实现了调用存储过程的方法。






本文转自stg609博客园博客,原文链接:http://www.cnblogs.com/stg609/archive/2008/09/25/1298967.html,如需转载请自行联系原作者


目录
相关文章
|
2月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
2月前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
113 1
|
2月前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
104 1
|
2月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
|
2月前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
59 3
|
2月前
|
存储 SQL 安全
|
2月前
|
存储 SQL 数据库
使用SQL创建视图和存储过程
使用SQL创建视图和存储过程
23 0
|
4月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
45 1
|
4月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
131 0
|
4月前
|
存储 SQL 数据库
如何使用 SQL Server 创建存储过程?
【8月更文挑战第31天】
227 0
下一篇
DataWorks