支持多返回值存储过程的SqlHelper
public readonly string connStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
/// <summary>
/// 执行非插叙语句,返回受影响行数
/// </summary>
/// <param name="cmdText">Sql语句</param>
/// <param name="ps">参数列表</param>
/// <returns>受影响行数</returns>
public int ExecuteNonQuery(string cmdText, params SqlParameter[] ps)
{
return this.ExecuteNonQuery(cmdText, CommandType.Text, ps);
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="ps">参数列表</param>
/// <returns>返回存储过程成功与否</returns>
public int ExecuteNonQuerySP(string cmdText, params SqlParameter[] ps)
{
return this.ExecuteNonQuery(cmdText, CommandType.StoredProcedure, ps);
}
/// <summary>
/// 执行SQL语句或存储过程,返回结果
/// </summary>
/// <param name="cmdText">SQL语句或存储过程名称</param>
/// <param name="type">执行类型</param>
/// <param name="ps">参数列表</param>
/// <returns>返回受影响行数或存储过程成功与否</returns>
public int ExecuteNonQuery(string cmdText, CommandType type, params SqlParameter[] ps)
{
if (type == CommandType.Text)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
throw ex;
}
}
else if (type == CommandType.StoredProcedure)
{
try
{
ps[ps.Length - ].Direction = ParameterDirection.Output;
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
conn.Open();
cmd.ExecuteNonQuery();
}
}
return (int)ps[ps.Length - ].Value;
}
catch (Exception ex)
{
throw ex;
}
}
else
{
return -;
}
}
/// <summary>
/// 执行查询语句,返回第一行第一列数据
/// </summary>
/// <param name="cmdText">Sql语句</param>
/// <param name="ps">参数列表</param>
/// <returns>第一行第一列数据</returns>
public object ExecuteScalar(string cmdText, params SqlParameter[] ps)
{
return ExecuteScalar(cmdText, CommandType.Text, ps);
}
/// <summary>
/// 执行存储过程,返回存储过程返回值
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="ps">参数列表</param>
/// <returns>存储过程返回值</returns>
public object ExecuteScalarSP(string cmdText, params SqlParameter[] ps)
{
return ExecuteScalar(cmdText, CommandType.StoredProcedure, ps);
}
/// <summary>
/// 执行查询语句或存储过程,返回第一行第一列数据或存储过程返回值
/// </summary>
/// <param name="cmdText">Sql语句或存储过程名称</param>
/// <param name="ps">参数列表</param>
/// <returns>第一行第一列数据或存储过程返回值</returns>
public object ExecuteScalar(string cmdText, CommandType type, params SqlParameter[] ps)
{
if (type == CommandType.Text)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
conn.Open();
return cmd.ExecuteScalar();
}
}
}
catch (Exception ex)
{
return ex;
}
}
else if (type == CommandType.StoredProcedure)
{
try
{
for (int i = ; i < ps.Length; i++)
{
if (ps[i].Value == null)
{
ps[i].Direction = ParameterDirection.Output;
}
}
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.CommandType = type;
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
conn.Open();
cmd.ExecuteScalar();
}
}
List<Object> returnValue = new List<object>();
for (int i = ; i < ps.Length; i++)
{
if (ps[i].Direction == ParameterDirection.Output)
{
returnValue.Add(ps[i].Value);
}
}
return returnValue;
}
catch (Exception ex)
{
return ex;
}
}
else
{
return -;
}
}
/// <summary>
/// 执行查询语句,并返回一个DataReader阅读器
/// </summary>
/// <param name="cmdText">Sql语句</param>
/// <param name="ps">参数列表</param>
/// <returns>DataReader阅读器</returns>
public SqlDataReader ExecuteReader(string cmdText, params SqlParameter[] ps)
{
return ExecuteReader(cmdText, CommandType.Text, ps);
}
/// <summary>
/// 执行存储过程,并返回一个DataReader阅读器
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="ps">参数列表</param>
/// <returns>DataReader阅读器</returns>
public SqlDataReader ExecuteReaderSP(string cmdText, params SqlParameter[] ps)
{
return ExecuteReader(cmdText, CommandType.StoredProcedure, ps);
}
/// <summary>
/// 执行查询语句或存储过程,并返回一个DataReader阅读器
/// </summary>
/// <param name="cmdText">Sql语句或存储过程名称</param>
/// <param name="ps">参数列表</param>
/// <returns>DataReader阅读器</returns>
public SqlDataReader ExecuteReader(string cmdText, CommandType type, params SqlParameter[] ps)
{
SqlConnection conn = new SqlConnection(connStr);
try
{
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.CommandType = type;
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}
catch (Exception ex)
{
conn.Dispose();
throw (ex);
}
}
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="cmdText">Sql语句</param>
/// <param name="ps">参数列表</param>
/// <returns>返回的DataSet</returns>
public DataSet GetDataSet(string cmdText, params SqlParameter[] ps)
{
return this.GetDataSet(cmdText, CommandType.Text, ps);
}
/// <summary>
/// 执行存储过程返回DataSet
/// </summary>
/// <param name="cmdText">存储过程名</param>
/// <param name="ps">参数列表</param>
/// <returns>返回DataSet</returns>
public DataSet GetDataSetSP(string cmdText, params SqlParameter[] ps)
{
return this.GetDataSet(cmdText, CommandType.StoredProcedure, ps);
}
/// <summary>
/// 执行存储过程,或SQL语句,返回DataSet
/// </summary>
/// <param name="cmdText">SQL语句或存储过程名称</param>
/// <param name="type">执行类型</param>
/// <param name="ps">参数列表</param>
/// <returns>返回DataSet</returns>
public DataSet GetDataSet(string cmdText, CommandType type, params SqlParameter[] ps)
{
DataSet ds = new DataSet();
try
{
using (SqlDataAdapter sda = new SqlDataAdapter(cmdText, connStr))
{
if (ps != null)
{
sda.SelectCommand.Parameters.AddRange(ps);
}
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.Fill(ds);
}
return ds;
}
catch (Exception ex)
{
ds.Dispose();
throw (ex);
}
}
这个SqlHelper里面用了很多重载,体验会好一点。并且ExecuteScalar里面支持多返回值的存储过程,会以一个List<Object>的形式返回。
支持多返回值存储过程的SqlHelper的更多相关文章
- golang函数——可以为类型(包括内置数据类型)定义函数,类似类方法,同时支持多返回值
不可或缺的函数,在Go中定义函数的方式如下: func (p myType ) funcName ( a, b int , c string ) ( r , s int ) { return } 通过 ...
- C#获取存储过程返回值和输出参数值的方法
//转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. 不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...
- springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)
HandlerMethodReturnValueHandler是用于对Controller中函数执行的返回值进行处理操作的,springMVC提供了多个HandlerMethodReturnValue ...
- C#7.0--引用返回值和引用局部变量
一.在C#7.0以上版本中,方法的返回值可以通过关键字ref指定为返回变量的引用(而不是值)给调用方,这称为引用返回值(Reference Return Value,或ref returns): 1. ...
- C++中的return返回值:return0 or return -1?
C++98 中定义了如下两种 main 函数的定义方式: int main( ) int main( int argc, char *argv[] ) (参考资料:ISO/IEC 14882(19 ...
- C#函数多返回值的方法
C#以前都是不支持多返回值,当需要返回多个值的时候,就会感觉比较麻烦,通常的做法有 1.采用ref,out 关键字返回 2.定义类或者结构体 返回对象 C# 6.0出来了新的语法 Tuple 支付返回 ...
- Go基础:函数多返回值特性
之前在写Python程序的时候,惊叹于它支持多返回值的特性带来的便利性.在学习Go的时候,发现Go也拥有多返回值的特性. 1.基本用法 创建一个多返回值的方法: func getACar() (bra ...
- 013_go语言中的函数多返回值
代码演示 package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b : ...
随机推荐
- 使用Java原生代理实现AOP
### 本文由博主柒.原创,转载请注明出处 ### 完整源码下载地址 [https://github.com/MatrixSeven/JavaAOP](https://github.com/Matri ...
- Power BI官方视频(3) Power BI Desktop 8月份更新功能概述
Power BI Desktop 8月24日发布了更新版本.现将更新内容翻译整理如下,可以根据后面提供的链接下载最新版本使用. 1.主要功能更新 1.1 数据钻取支持在线版 以前的desktop中进行 ...
- js callee,caller学习
原文地址:js callee,caller学习 /* * caller 返回一个对函数的引用,该函数调用了当前函数. * 如果函数是由顶层调用的,那么 caller包含的就是 null . * 如果在 ...
- the Zen of Python---转载版
摘自译文学习区 http://article.yeeyan.org/view/legendsland/154430 The Zen of Python Python 之禅 Beautiful is b ...
- 【干货分享】流程DEMO-补打卡
流程名: 补打卡申请 业务描述: 当员工在该出勤的工作日出勤但漏打卡时,于一周内填写补打卡申请. 流程相关文件: 流程包.xml 流程说明: 直接导入流程包文件,即可使用本流程 表单: 流程: 图片 ...
- App解读
一直不懂别人口中说的原生开发.混合式开发.今天突然看了一篇文章讲解的是什么叫做原生App?移动 Web App?混合APP?分享给大家. 原生App是专门针对某一类移动设备而生的,它们都是直接安装到设 ...
- 利用PowerShell复制SQLServer账户的所有权限
问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...
- linux下配置matlab运行环境(MCR)
在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...
- 类型转换器(InitBinder 初始化绑定器)
单日期格式 导入jar包 创建FirstController.java @Controller public class FirstController { /** * @param binder * ...
- Angular2笔记:NgModule
Angular的模块的目的是用来组织app的逻辑结构. 在ng中使用@NgModule修饰的class就被认为是一个ng module.NgModule可以管理模块内部的Components.Dire ...