C#存储过程 传入参数 传出参数 结果集
作者:卞功鑫 转载请保留:http://www.cnblogs.com/BinBinGo/p/6400928.html
//1 连接字符串
string connectionString
= "server=127.0.0.1;integrated security=true;database=MSPetShop4";
// = "server=.;uid=sa;pwd=SQL@5;database=AdventureWorks2012";
// = "server=.;user id=sa;password=SQL@5;database=AdventureWorks2012";
//2 实例化数据库连接
using(System.Data.SqlClient.SqlConnection connection = new SqlConnection(connectionString))
{
//定义执行SQL语句,可以为select查询,也可以为存储过程,我们要的只是返回的结果集.
string sql = "p_proc_name"; //SqlCommand 表示数据库要执行的sql命令
System.Data.SqlClient.SqlCommand command = new SqlCommand(sql, connection);
//告知数据库现在要执行的是存储过程
//默认为标准SQL语句,可以不用设置.
command.CommandType = CommandType.StoredProcedure; //提供存储过程参数(传入参数) 这里的名称@pin和存储过程中的保持一致
System.Data.SqlClient.SqlParameter pin = new SqlParameter("@pin", System.Data.SqlDbType.Int);
//参数赋值
pin.Value = ;
//将上面的参数加入command中
command.Parameters.Add(pin);
//表值参数
System.Data.SqlClient.SqlParameter pids = new SqlParameter("@ids", ids); //ids 为datatable
pids.SqlDbType = SqlDbType.Structured;
pids.TypeName = "dbo.EntityIdCollection";//EntityIdcollection 为自定义类别
command.Parameters.Add(pids);
//提供存储过程参数(传出参数)这里的名称@pout和存储过程中的保持一致
System.Data.SqlClient.SqlParameter pout = new SqlParameter("@pout", System.Data.SqlDbType.Int); //声明为传出参数 Direction 参数方向 ,默认为传入参数 ParameterDirection.Input
pout.Direction = ParameterDirection.Output; //将上面的参数加入command中
command.Parameters.Add(pout); //return 参数 名称@returnValue随便取,类型固定为int类型.
System.Data.SqlClient.SqlParameter preturn = new SqlParameter("@returnValue",System.Data.SqlDbType.Int);
//声明为传出参数 Direction 参数方向 ,默认为传入参数 ParameterDirection.Input
preturn.Direction = ParameterDirection.ReturnValue;
//return 在存储过程中隐藏的,但是在C#时要显式使用
command.Parameters.Add(preturn); //强大的SqlDataAdapter
//可以使用 SqlDataAdapter(command) 属性实体化,也可以使用SqlDataAdapter(sql,connection)实例化.
//SqlDataAdapter(command) 主要用于存储过程
//SqlDataAdapter(sql,connection) 主要用于select语句
System.Data.SqlClient.SqlDataAdapter adapter = new SqlDataAdapter(command); //用于接收adapter.Fill 返回的结果集
DataSet ds = new DataSet();
//返回集插入到 dataset ds 中
adapter.Fill(ds); //现在得到了三个东西
//一 存储过程的返回结果集 dataset
//二 存储过程的 output 传出参数值
//三 存储过程的 return 值 int outputValue = (int)pout.Value; int returnValue = (int)preturn.Value; Console.WriteLine("返回了{0}个DataTable;outputValue 的值为{1};returnValue 的值为{2}", ds.Tables.Count,outputValue,returnValue); }
Console.ReadLine();
存储过程
ALTER PROC p_proc_name
(
@pin INT ,
@pout INT OUTPUT
)
AS --------执行用户自定义逻辑-------------- ---------返回结果集 1---------------------- SELECT 客户 ,
产品 ,
数量 ,
金额 ,
年龄
FROM dbo.A -----------返回结果集 2-------------------- SELECT 客户 ,
产品 ,
数量 ,
金额 ,
年龄
FROM dbo.A
WHERE 年龄 IS NOT NULL -----------设置output参数值------------------- SET @pout = @pin * 100; --------------returnw值------------- IF ( @pin <= 0 )
--return 如果没有写,其值默认为0 ,表示执行成功.
RETURN -1;
--return 之后的语句不执行.
C#存储过程 传入参数 传出参数 结果集的更多相关文章
- js传入和传出参数乱码
向js传入参数乱码问题 第一种解决方法 当Js中输出内容中包含中文,可能会导致出现乱码. 如何解决: 1. 设置页面编码: Html代码 <meta http-equiv="Conte ...
- chomp成功的返回值是1,chomp对参数去回车符后会改变参数的值,是传入又是传出参数。$arrow_notation = ( chomp( $unpackeing = <STDIN>) );
44 my $unpackeing; 45 my $arrow_notation = ''; 46 print "Enter name to query, enter ex ...
- C#存储过程中传入传出参数
作者:卞功鑫 ,转载请保留http://www.cnblogs.com/BinBinGo/p/6399847.html //1 连接字符串 string connectionString = &qu ...
- 存储过程传入datatable
存储过程传入一般的参数都很简单,今天要说一下存储过程传入datatable 类型 首先要自定义一个 表类型 CREATE TYPE [dbo].[servicedatableType] AS TABL ...
- C语言的本质(16)——函数接口的传入参数与传出参数
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcp ...
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...
- 在sqlserver存储过程中给in参数传带逗号值的办法,如传'1','2','3'这样的
最近在一项目修改中,要在存储过程中给in参数传值,语句写的也对,但怎么执行都得不出结果,如果把这语句直接赋值.执行,却能得出结果,很是奇怪,如: 直接执行select schoolname from ...
- 每日一记-mybatis碰到的疑惑:String类型可以传入多个参数吗
碰到一个觉得很疑惑的问题,Mybatis的parameterType为String类型的时候,能够接收多个参数的吗? 背景 初学Mybatis的时候,看的教程和书籍上都是在说基本的数据类型如:int. ...
- mybatis传入多个参数
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
随机推荐
- oracle-db安装
在LINUX平台上手动创建多个实例(oracle11g) http://blog.csdn.net/sunchenglu7/article/details/39676659 安装完桌面与数据库软件后, ...
- WebSocket概念
WebSocket 是什么? WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 ...
- laravel中resource资源路由方法
新增的 resource 方法将遵从 RESTful 架构为用户资源生成路由.该方法接收两个参数,第一个参数为资源名称,第二个参数为控制器名称. Route::resource('users', 'U ...
- 无界面运行Jmeter压测脚本 --后知者
原文作者---后知者 原文地址:http://www.cnblogs.com/houzhizhe/p/8119735.html [后知者的故事]:针对单一接口压测时出现了从未遇到的问题,设好并发量后用 ...
- Typescript学习总结之泛型
泛型: 参数化的类型,一般用来限制结合的内容 class Student { constructor(public name: string) { } say() { console.log(this ...
- [转]使用 Angular CLI 和 ng-packagr 构建一个标准的 Angular 组件库
使用 Angular CLI 构建 Angular 应用程序是最方便的方式之一. 项目目标 现在,我们一起创建一个简单的组件库. 首先,我们需要创建一个 header 组件.这没什么特别的,当然接下来 ...
- Redis select选择数据库
Redis的功能真是强大,可以做数据库,可以做缓存. 今天发现Redis支持分隔操作空间,使得空间与空间之间互不影响. SELECT index 切换到指定的数据库,数据库索引号 index 用数字值 ...
- 中文自然语言处理工具HanLP源码包的下载使用记录
中文自然语言处理工具HanLP源码包的下载使用记录 这篇文章主要分享的是hanlp自然语言处理源码的下载,数据集的下载,以及将让源代码中的demo能够跑通.Hanlp安装包的下载以及安装其实之前就已经 ...
- Cordova+Angularjs+Ionic 混合开发入门讲解
作为一名学习Android开发的学生,对于移动开发的发展趋势颇为关注,大家都知道,现在原生的移动开发在企业上基本很少使用了,大部分企业为了降低成本,选择了webapp,hybrid(混合开发)这两种模 ...
- HTML和CSS的静态页面
链接:https://pan.baidu.com/s/1fGajigyQJDLIHqxJn2LXsQ 提取码:7sry 复制这段内容后打开百度网盘手机App,操作更方便哦 设计思路,把网页分成几个模块 ...