CYQ.Data V5 从入门到放弃ORM系列:教程 - MProc类使用
MProc介绍
MProc:是一个用于执行SQL或存储过程的数据库操作类,它轻量高性能地类似于Dapper。
MProc:它出现的场景很少,因为MAction自身就能处理掉90%-100%的数据操作(以存储过程为核心操作的除外)
MProc项目Demo
1:项目图:只有一个控制台代码,说明此类的使用极度简单。

2:示例代码:
class Program
{ static void Main(string[] args)
{
//MAction已经演示了配置文件配置链接,这里就用代码了。
AppConfig.DB.DefaultConn = "Data Source={0}demo.db;failifmissing=false;";
ExeSql();
ExeProc();
Console.Read();
}
static void OutMsg(object msg)
{
Console.WriteLine(msg.ToString());
}
/// <summary>
/// 执行SQL语句
/// </summary>
static void ExeSql()
{
//AppConfig.DB.DefaultConn = "server=CYQ-PC\\SQL2008;database=Test;uid=sa;pwd=123456";
string sql = "select * from users";
using (MProc proc = new MProc(sql))
{
proc.BeginTransation();//事务的使用和MAction是一样的 MDataTable dt = proc.ExeMDataTable();
OutMsg(dt.Rows.Count); proc.ResetProc("select name from users where UserID=@UserID");
proc.Set("UserID", );
string name = proc.ExeScalar<string>();
OutMsg(name); proc.ResetProc("update users set password=123 where name=@name");
proc.Set("name", name);
int result = proc.ExeNonQuery();
OutMsg(result); if (result < )
{
proc.RollBack();//找不到结果,要回滚事务
return;
} proc.ResetProc("select * from users;select * from Article");//多语句执行
List<MDataTable> dtList = proc.ExeMDataTableList();
OutMsg(dtList.Count);
proc.EndTransation();
}
}
/// <summary>
/// 执行存储过程
/// </summary>
static void ExeProc()
{
return;
//SQlite 没有存储过程,只能写示例代码
using (MProc proc = new MProc("存储过程名"))
{
proc.Set("参数1", "值1");
proc.Set("参数2", "值2");
proc.SetCustom("ReturnValue", ParaType.ReturnValue);//如果有返回值
proc.SetCustom("OutPutValue1", ParaType.OutPut);//如果有output值
proc.SetCustom("OutPutValue2", ParaType.OutPut);//如果有output值多个
proc.SetCustom("XXX", ParaType.Cursor);//如果是Oracle有游标
proc.SetCustom("XXX2", ParaType.CLOB);//Oracle的CLOB类型
proc.SetCustom("XXX3", ParaType.NCLOB);//Oracle的NCLOB类型
MDataTable dt = proc.ExeMDataTable();//执行语句
int returnValue = proc.ReturnValue;//拿返回值
object outPutValue = proc.OutPutValue;//如果只有一个值
Dictionary<string,string> dic=proc.OutPutValue as Dictionary<string,string>;
string out1 = dic["OutPutValue1"];
string out2 = dic["OutPutValue2"];
}
}
}
3:代码说明:
1:MProc的参数判断是存储过程还是SQL语句是按空格判断的。
2:如果你的SQL语句是select%20*%20from...将空格转义,会被判断为存储过程的。
3:如果你真要这么整,第三个参数isFixProc可以设置为false或true来指定是SQL或存储过程。
4:存储过程时:特殊的参数在SetCustom里设置。
5:返回值、OutPut值,都是在执行后才拿值的。(以前有人在执行前就拿值,弄的我不知道怎么解释)
总结:
1:Demo的SVN下载地址:http://code.taobao.org/svn/cyqopen/trunk/CYQ.Data.GettingStarted/
2:谢谢支持!
CYQ.Data V5 从入门到放弃ORM系列:教程 - MProc类使用的更多相关文章
- CYQ.Data V5 从入门到放弃ORM系列:框架的优势
前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...
- CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用
Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ...
- CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用
背景: 随着V5框架使用者的快速增加,终于促使我开始对整个框架编写完整的Demo. 上周大概花了一星期的时间,每天写到夜里3点半,终完成了框架所有功能的Demo. 同时,按V5框架名称空间的顺序,对每 ...
- CYQ.Data V5 从入门到放弃ORM系列:教程 - AppConfig、AppDebug类的使用
1:AppConfig类的介绍: Public Static (Shared) Properties IsEnumToInt 是否使用表字段枚举转Int方式(默认为false). 设置为true时,可 ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了
前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...
- 终于等到你:CYQ.Data V5系列 (ORM数据层,支持.NET Core)最新版本开源了
前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...
- CYQ.Data V5 分布式自动化缓存设计介绍(二)
前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...
- CYQ.Data V5 分布式缓存Redis应用开发及实现算法原理介绍
前言: 自从CYQ.Data框架出了数据库读写分离.分布式缓存MemCache.自动缓存等大功能之后,就进入了频繁的细节打磨优化阶段. 从以下的更新列表就可以看出来了,3个月更新了100条次功能: 3 ...
随机推荐
- 纯CSS3实现的一些酷炫效果
之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的. 一.笑脸猫动画 实现效果如下: 这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整. 1.先看 ...
- ABP文档 - 后台作业和工作者
文档目录 本节内容: 简介 后台作业 关于作业持久化 创建一个后台作业 在队列里添加一个新作业 默认的后台作业管理器 后台作业存储 配置 禁用作业执行 Hangfire 集成 后台工作者 创建一个后台 ...
- 【WCF】错误协定声明
在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...
- JavaScript之职责链模式
一.概述 职责链模式(Chain of responsibility),就是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有 ...
- Hive on Spark安装配置详解(都是坑啊)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...
- javascript中的继承与深度拷贝
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...
- C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置
参考页面: http://www.yuanjiaocheng.net/webapi/test-webapi.html http://www.yuanjiaocheng.net/webapi/web-a ...
- psoc学习
第一是:项目的路径需要放在Documents and Settings\,也就是默认的文件夹的地方,不然会报错错误范例为:Question:CY8CKIT-023 kit example projec ...
- 【干货分享】流程DEMO-补打卡
流程名: 补打卡申请 业务描述: 当员工在该出勤的工作日出勤但漏打卡时,于一周内填写补打卡申请. 流程相关文件: 流程包.xml 流程说明: 直接导入流程包文件,即可使用本流程 表单: 流程: 图片 ...
- 使用Hudson搭建自动构建服务器
环境: ubuntu1404_x64 说明: 使用hudson和git搭建自动构建服务器的简单示例 安装hudson及相关插件 安装hudson 安装命令如下: sudo sh -c "ec ...