开发者社区> 泡泡浅眠> 正文

CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)

简介:
+关注继续查看

上一篇:CYQ.Data 轻量数据层之路 使用篇四曲 MAction 增删改(十五)

 

本篇内容概要

本篇继续上一篇内容,本节介绍MProc 类的相关操作。
1:MProc 存储过程操作
2:MProc SQL执行操作[
将于V1.5版本以上支持]

 

一:构造函数

方法原型:
public MProc(object procNamesEnum)
public MProc(object procName, string conn)

说明:

构造函数和MAction用法一致,相关操作可参数MAction。

示例1:

//传入存储过程名称 默认取配置项Conn的数据库链接
MProc proc = new MProc("GetUserList");
MProc proc 
= new MProc(ProcNames.GetUserList);//通过枚举传入

示例2:

复制代码
ExpandedBlockStart.gif
//传入数据库新的数据库链接 配置项Conn
MProc proc = new MProc("GetUserList","ChatConn");
//传入数据库新的数据库链接 直接链接字符串
MProc proc = new MProc("GetUserList","Server=.;database=Chat;uid=sa;pwd=xxxxx");
//多数据库下用约定名称 取自ChatConn配置项的链接
MProc proc = new MProc(P_ChatEnum.GetUserList);
复制代码

示例3:

说明:仅在V1.5版本以上支持。
//执行自定义SQL 语句 默认取自Conn配置项数据库链接
MProc proc = new MProc("select * from Users");
//执行自定义SQL 语句 取自ChatConn配置项数据库链接
MProc proc = new MProc("select * from Users","ChatConn");

 

二:参数操作

方法原型:

public void Set(object paraName, object value)
public void Set(object paraName, object value,SqlDbType sqlDbType)
public void Clear()

示例1:

//为存储过程或参数化SQL语句的设置参数
proc.Set("ID"888);//不加@,内部自加
proc.Set("@ID"888);
proc.Set(GetUserList.ID, 
888);//枚举方式传递

示例2:

proc.Set(Users.ID, 888,SqlDbType.Int);//比上个示例多加了个参数。

示例3:

proc.Clear();//清除所有Set的参数。

 

三:方法操作

方法原型:

public MDataTable ExeMDataTable()
public int ExeNonQuery()
public T ExeScalar<T>()

示例1:

MDataTable table = proc.ExeMDataTable();//执行返回MDataTable

示例2:

int result = proc.ExeNonQuery();//添加、更新、删除操作,返回受影响的行数。

示例3:

string result = proc.ExeScalar<string>();//执行语句,返回首行首列的值。

 

 

四:返回值与链接关闭

方法原型:
public int ReturnValue
public void Close()

示例1:

MDataTable table= proc.ExeMDataTable();
int value = proc.ReturnValue;//执行的如果是存储过程,取返回值,通过是记录总数。

示例:

MProc proc = new MProc("GetUserList");
MDataTable table
= proc.ExeMDataTable();
int value = proc.ReturnValue;
proc.Close();
//执行完后关闭数据库链接

 

 

五:一个完整示例

示例:

复制代码
ExpandedBlockStart.gif
使用示例:
实例化:  MProc proc 
= new MProc(ProcNames.GetList);
添加参数:proc.Set(GetList.ID, 
10);
获取列表:MDataTable table 
= proc.ExeMDataTable();
取返回值:int count=proc.ReturnValue;
关闭链接:proc.Close();
绑定控件:GridView1.DataSource 
= table;
         GridView1.DataBind();
复制代码

 

 

结言

通过本节介绍,掌握使用MProc处理存储过程操作。
一些特别的自定的SQL语句操作也可以操作[需要V1.5及以上版本支持]。

 

 

本使用篇教程到此结束,下面紧跟着会开源V1.4版本,敬请关注。

同时若引起起相关教程需要升级,会续篇介绍。

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/09/06/1819286.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【SQL开发实战技巧】系列(二十五):数仓报表场景☞结果集中的重复数据只显示一次以及计算部门薪资差异高效的写法以及如何对数据进行快速分组
本篇文章讲解的主要内容是:***如何使用lag函数让结果集重复数据只显示一次、用行转列pivot写法优化部门之间计算工资差异类似需求、如何通过ceil函数对已有数据进行分组打印、放假安排团队分组值班,如何通过ntile()over(order by )快速进行人员分组***
13 0
【SQL开发实战技巧】系列(二十三):数仓报表场景☞ 如何对数据排列组合去重以及通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高
怎样对数据组合重新排列并去重的问题、通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本篇文章主要介绍的两个方面,第一个方面曾经有好几个网友和同事问我,第二个问题真的是很多同行的通病,认为分析函数是万金油,一股脑用。
16 0
【SQL开发实战技巧】系列(二十一):数据仓库中时间类型操作(进阶)识别重叠的日期范围,按指定10分钟时间间隔汇总数据
如何识别重叠的日期范围、日期出现次数、确定当前记录和下一条记录之间相差的天数【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
13 0
【SQL开发实战技巧】系列(二十):数据仓库中时间类型操作(进阶)获取季度开始结束时间以及如何统计非连续性时间的数据
本篇文章讲解的主要内容是:***汇总报表时常要求按季度分类汇总这就需要通过给定年份获取对应的季度开始结束时间、业务数据不连续的情况下如何统计所有年份数据、如何统计相同月份与周内日期聘用的员工、如何返回2月或12月聘用的所有员工以及周二聘用的所有员工***
12 0
【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report
本篇文章讲解的主要内容是:***计算部门中那个工资等级的员工最多、通过返回部门10最大工资所在行的员工名称小案例来讲解max/min() keep() over()、通过查询工资最高的人小案例来介绍fisrt_value、last_value、通过计算各个部门的工资合计以及各个部门合计工资占总工资的比例小案例来介绍如何计算百分比及ratio_to_report分析函数的使用***
9 0
【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
插入数据、阻止对某几列插入的实现、复制表的定义和数据以及注意事项、比创建约束功能更强大!用 WITH CHECK OPTION限制数据录入、如何一个insert将数据同时插入多个表【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。但是!ORA - 01723 : 不允许长度为 0 的列。
13 0
【SQL开发实战技巧】系列(七):从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起
本篇文章讲解的主要内容是:***如果有重复数据如何检查出两个表中的差异数据及对应条数、表连接做聚合容易出现重复计算的错误、多表查询空值处理问题、NOT IN的子查询范围不能是空值,否则查询结果为空。***
12 0
【SQL系列】从表中随机返回n行数据
【SQL系列】从表中随机返回n行数据
14 0
mysql 导出查询结果/导入.sql文件数据/mysqldump导出表or数据
mysql 导出查询结果/导入.sql文件数据/mysqldump导出表or数据
45 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
用SQL做数据分析
立即下载
阿里云流计算 Flink SQL 核心功能解密
立即下载
Comparison of Spark SQL with Hive
立即下载