C#调用sql2000存储过程方法小结

 更新时间:2014年10月27日 09:06:51   投稿:shichen2014  
这篇文章主要介绍了C#调用sql2000存储过程的方法,以实例形式分别对调用带输入参数及输出参数的存储过程进行了详细分析,非常具有实用价值,需要的朋友可以参考下

本文实例总结了C#调用sql2000存储过程方法,分享给大家供大家参考。具体实现方法如下:

调试环境: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();

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

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • C#泛型方法在lua中表示的一种设计详解

    C#泛型方法在lua中表示的一种设计详解

    这篇文章主要给大家介绍了关于C#泛型方法在lua中表示的一种设计的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • C#获取文件夹及文件的大小与占用空间的方法

    C#获取文件夹及文件的大小与占用空间的方法

    这篇文章主要介绍了C#获取文件夹及文件的大小与占用空间的方法,需要的朋友可以参考下
    2014-07-07
  • C#多线程系列之多线程锁lock和Monitor

    C#多线程系列之多线程锁lock和Monitor

    这篇文章介绍了C#多线程锁lock和Monitor的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#使用自定义的泛型节点类实现二叉树类

    C#使用自定义的泛型节点类实现二叉树类

    这篇文章主要为大家详细介绍了C#如何使用自定义的泛型节点类 Node<T>实现二叉树类BinaryTree<T>及其方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • C#笔记之EF Code First 数据模型 数据迁移

    C#笔记之EF Code First 数据模型 数据迁移

    EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别。Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功),我摸索出了一种简单有效的方法,这里分享给大家
    2021-09-09
  • C#自定义画刷原理解析

    C#自定义画刷原理解析

    这篇文章主要为大家详细介绍了C#自定义画刷原理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C# EF去除重复列DistinctBy方式

    C# EF去除重复列DistinctBy方式

    这篇文章主要介绍了C# EF去除重复列DistinctBy方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 浅谈C#中Process类的使用详解

    浅谈C#中Process类的使用详解

    本篇文章是对C#中Process类的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • unity3d 对接 workerman 实现联机游戏功能

    unity3d 对接 workerman 实现联机游戏功能

    workerman 是一款开源高性能 PHP 应用容器,他除了用于互联网、即时通讯、APP 开发、硬件通讯、智能家居、物联网等领域的开发外,这篇文章主要介绍了unity3d 对接 workerman 实现联机游戏,需要的朋友可以参考下
    2022-10-10
  • .NET连接MongoDB数据库实例教程

    .NET连接MongoDB数据库实例教程

    这则小窍门将讲述如何开发一个.NET应用来连接Mongo数据库并执行多种操作。同时还稍微涉及了Mongo数据库和多种命令
    2013-11-11

最新评论