语言:C#

一、调用带输入参数的存储过程

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

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

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();

.net 调用存储过程的更多相关文章

  1. spring data jpa 调用存储过程

    网上这方面的例子不是很多,研究了一下,列出几个调用的方法. 假如我们有一个mysql的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `plus1in ...

  2. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  3. IBatis.Net使用总结(四)-- IBatis 调用存储过程

    IBatis 调用存储过程 http://www.cnblogs.com/jeffwongishandsome/archive/2010/01/10/1543219.html http://www.c ...

  4. SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

    我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...

  5. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】

    疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...

  6. MyBatis学习总结(六)——调用存储过程(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013518.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存 ...

  7. C# 调用存储过程操作 OUTPUT参数和Return返回值

    本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存 ...

  8. jdbc调用存储过程和函数

    1.调用存储过程 public class CallOracleProc { public static void main(String[] args) throws Exception{ Stri ...

  9. jdbc执行预处理,批处理,LOB字段处理,调用存储过程

    (1)jdbc执行预处理 PreparedStatment预备语句 eg:String sql="insert into user(id,name,birthday,money) value ...

  10. MyBatis入门学习教程-调用存储过程

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...

随机推荐

  1. Jmeter(四十三)_性能测试分配堆内存

    内存泄漏.内存溢出是什么? 内存泄露是指你的应用使用资源之后没有及时释放,导致应用内存中持有了不需要的资源,这是一种状态描述: 内存溢出是指你应用的内存已经不能满足正常使用了,堆栈已经达到系统设置的最 ...

  2. Kubernetes Pod 生命周期

    一. Pod Hook Kubernetes 为我们提供了生命周期钩子,就是我们所说的Pod Hook,Pod Hook是由kubelet发起的,当容器中的进程启动前或者容器中的进程终止之前运行.这是 ...

  3. openstack错误问题定位及调试

  4. 如何通过配置tomcat或是web.xml让ie直接下载文件

    web.xml(tomcat\conf\web.xml)中配置了 <mime-mapping>   <extension>txt</extension>   < ...

  5. java 库 pdfbox 将 pdf 文件转换成高清图片方法

    近期需要将 pdf 文件转成高清图片,使用库是 pdfbox.fontbox.可以使用 renderImageWithDPI 方法指定转换的清晰度,当然清晰度越高,转换需要的时间越长,转换出来的图片越 ...

  6. C++11新特性— auto 和 decltype 区别和联系

    一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题,C++11新标准 ...

  7. Spring cloud微服务安全实战-7-9自定义日志采集的格式和内容

    怎么来控制输出的日志的格式.并且从日志里面提取出来我想要的一些信息. 整个的message是一个大的json格式字符串. 虽然是可以通过关键字搜索到.但是日志看起来并不舒服. 在我们的控制台,日志实际 ...

  8. Tengine的说明

    什么是Tengine 官方帮助文档:http://tengine.taobao.org/changelog_cn.html

  9. php中类的不定参数使用示例

    在类的实例化过程中,可以带或不带参数,那么构造函数将如何处理这些参数呢?为了使构造函数具有通用性,在定义构造函数时,一般不带参数,然后在其内部对参数情况进行处理.下面代码显示了一个完整的通用Perso ...

  10. [LeetCode] 407. Trapping Rain Water II 收集雨水 II

    Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevati ...