CYQ.Data V5 从入门到放弃ORM系列:教程 - MProc类使用

MProc介绍

MProc:是一个用于执行SQL或存储过程的数据库操作类,它轻量高性能地类似于Dapper。

MProc:它出现的场景很少,因为MAction自身就能处理掉90%-100%的数据操作(以存储过程为核心操作的除外)

MProc项目Demo

1:项目图:只有一个控制台代码,说明此类的使用极度简单。

2:示例代码:

 1   class Program
 2     {
 3
 4         static void Main(string[] args)
 5         {
 6             //MAction已经演示了配置文件配置链接,这里就用代码了。
 7             AppConfig.DB.DefaultConn = "Data Source={0}demo.db;failifmissing=false;";
 8             ExeSql();
 9             ExeProc();
10             Console.Read();
11         }
12         static void OutMsg(object msg)
13         {
14             Console.WriteLine(msg.ToString());
15         }
16         /// <summary>
17         /// 执行SQL语句
18         /// </summary>
19         static void ExeSql()
20         {
21             //AppConfig.DB.DefaultConn = "server=CYQ-PC\\SQL2008;database=Test;uid=sa;pwd=123456";
22             string sql = "select * from users";
23             using (MProc proc = new MProc(sql))
24             {
25                 proc.BeginTransation();//事务的使用和MAction是一样的
26
27                 MDataTable dt = proc.ExeMDataTable();
28                 OutMsg(dt.Rows.Count);
29 33
34                 proc.ResetProc("select name from users where [email protected]");
35                 proc.Set("UserID", 1);
36                 string name = proc.ExeScalar<string>();
37                 OutMsg(name);
38
39                 proc.ResetProc("update users set password=123 where [email protected]");
40                 proc.Set("name", name);
41                 int result = proc.ExeNonQuery();
42                 OutMsg(result);
43
44                 if (result < 1)
45                 {
46                     proc.RollBack();//找不到结果,要回滚事务
47                     return;
48                 }
49
50                 proc.ResetProc("select * from users;select * from Article");//多语句执行
51                 List<MDataTable> dtList = proc.ExeMDataTableList();
52                 OutMsg(dtList.Count);
53                 proc.EndTransation();
54             }
55         }
56         /// <summary>
57         /// 执行存储过程
58         /// </summary>
59         static void ExeProc()
60         {
61             return;
62             //SQlite 没有存储过程,只能写示例代码
63             using (MProc proc = new MProc("存储过程名"))
64             {
65                 proc.Set("参数1", "值1");
66                 proc.Set("参数2", "值2");
67                 proc.SetCustom("ReturnValue", ParaType.ReturnValue);//如果有返回值
68                 proc.SetCustom("OutPutValue1", ParaType.OutPut);//如果有output值
69                 proc.SetCustom("OutPutValue2", ParaType.OutPut);//如果有output值多个
70                 proc.SetCustom("XXX", ParaType.Cursor);//如果是Oracle有游标
71                 proc.SetCustom("XXX2", ParaType.CLOB);//Oracle的CLOB类型
72                 proc.SetCustom("XXX3", ParaType.NCLOB);//Oracle的NCLOB类型
73                 MDataTable dt = proc.ExeMDataTable();//执行语句
74                 int returnValue = proc.ReturnValue;//拿返回值
75                 object outPutValue = proc.OutPutValue;//如果只有一个值
76                 Dictionary<string,string> dic=proc.OutPutValue as Dictionary<string,string>;
77                 string out1 = dic["OutPutValue1"];
78                 string out2 = dic["OutPutValue2"];
79             }
80         }
81     }

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:谢谢支持!

时间: 2024-08-18 16:21:32

CYQ.Data V5 从入门到放弃ORM系列:教程 - MProc类使用的相关文章

CYQ.Data V5 从入门到放弃ORM系列:框架的优势

前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化分布式缓存. 源代码已经提交,源码地址见:终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了 记得很多年前,大概2010年左右吧,CYQ.Data框架进入快速更新版本阶段的时候, 那时候的我会经常在一些技术群里有意无意的说起自己的框架,然后群里总有那么一些自我而自负的人会说: 你

CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用

Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志写到数据库中[需要配置LogConn项后方生效 ] WriteLogToTxt Overloaded. 将日志写到外部txt[web.config中配置路径,配置项为Logpath,默认路径为 "Logs/" ]  说明: 1:这个类很简单,主要的使用方法只有:WriteLogToTxt.

CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括使用方式,及相关介绍,都容易引人误解. 为此,我打算重新写个系列来介绍最新的版本,让大伙从传统的ORM编程过渡到自动化框架型思维编程(自已造的词). 于是:这个新系列的名称就叫:CYQ.Data 从入门到放弃ORM系列 什么是:CYQ.Data 1:它是一个ORM框架. 2:它是一个数据层组件. 3

终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了

前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说过 这么多年 秋天有两点没变 一是还是单身 另外一个就是cyq.data还没开源 终于等到开源了! 也许吧,只有把cyq.data最终开源了,才能解决单身问题,不然我在这上面花的时间太多,都没时间和妹子聊天了. 几个重要网址: 源码SVN地址:https://github.com/cyq1162/c

CYQ.Data V5 分布式自动化缓存设计介绍(二)

前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但框架的维护升级,还是时不时的在进行中的,这点从开源的Github上的代码提交时间上就可以看出来了. 毕竟<IT连>的后台WebAPI,用的是Taurus.MVC,后台系统管理用的是Aries. 不过今天,就不写创业相关的文章了,先分享篇技术类的文章. CYQ.Data 分布式自动缓存 之前写过一篇

CYQ.Data V5 数据库读写分离功能介绍

前言 好多年没写关于此框架的新功能的介绍了,这些年一直在默默地更新,从Nuget上的记录就可以看出来: 这几天在看Java的一些东西,除了觉的Java和.NET的相似度实在太高之外,就是Java太原始,急需被拯救. 之后又回到.NET的思维来,想着怎么在框架里实现读写分离控制请求切换. 之前几个月一直都有在思考,想及对框架现有的代码改动可能较大,所以迟迟没怎么下手. 最近终于在厕所蹲下的一瞬间,灵光一闪,感觉思绪来了,然后一鼓作气,就把它给作了. 数据库读写分离的三步曲 1:实现主(读)从(写)

CYQ.Data V5 分布式缓存MemCached应用开发介绍

前言 今天大伙还在热议关于.NET Core的东西,我只想说一句:在.NET 跨平台叫了这么多年间,其实人们期待的是一个知名的跨平台案例,而不是一堆能跨平台的消息. 好,回头说说框架: 在框架完成数据库读写分离的功能后,开始回想起2年前所构思的:关于框架集成分布式缓存MemCached的实现. 之前一直没动手,是因为思路比较飘,秉承着框架应该简单干净轻量引用无依赖和使用不复杂的思维: 看着MemCached的服务端协议,整天思考着自己用Socket写一个客户端. 后来可能是没激情,迟迟没动手.

CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上网的机子(两台笔记本+一台台式机),下载资料还得用公司的U盘再转到自己电脑,这种半封闭的环境,相当的让人不适应,有种欲仰天吐血的感觉. 这一周我都向三个带总的领导反映了上网问题,不过没啥响应,估计是没戏. 于是我只有把其中一台能上网的笔记本拿到自己桌子上去独自占用了,勉强也能上下网了,不过基于安全问

CYQ.Data 数据框架 使用篇一 入门指南

原文链接:http://www.cyqdata.com/cyqdata/article-detail-411 本文针对V5版本进行修改于(2016-07-04) 下面是使用步骤: 一:下载框架DLL[VS上在NuGet搜cyqdata,或者框架下载地址:下载中心] 下载框架后解压出:  1:CYQ.Data.dll和CYQ.Data.Xml(方法注释提示) 2:CYQ.Data.ProjectTool.exe (枚举或实体生成器) 3:API 帮助文档一份 4:更新记录.txt 5:VS集成Pr