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类使用的更多相关文章

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

    前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...

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

    Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ...

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

    背景: 随着V5框架使用者的快速增加,终于促使我开始对整个框架编写完整的Demo. 上周大概花了一星期的时间,每天写到夜里3点半,终完成了框架所有功能的Demo. 同时,按V5框架名称空间的顺序,对每 ...

  4. CYQ.Data V5 从入门到放弃ORM系列:教程 - AppConfig、AppDebug类的使用

    1:AppConfig类的介绍: Public Static (Shared) Properties IsEnumToInt 是否使用表字段枚举转Int方式(默认为false). 设置为true时,可 ...

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

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

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

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

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

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

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

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...

  9. CYQ.Data V5 分布式缓存Redis应用开发及实现算法原理介绍

    前言: 自从CYQ.Data框架出了数据库读写分离.分布式缓存MemCache.自动缓存等大功能之后,就进入了频繁的细节打磨优化阶段. 从以下的更新列表就可以看出来了,3个月更新了100条次功能: 3 ...

随机推荐

  1. 为什么 NaN 不等于自身?

    NaN 即Not a Number , 不是一个数字, 那么NaN到底是什么呢? 话说在JavaScript中,有6大数据类型,分别包括string,number,boolean,undefined, ...

  2. C# DateTime日期格式化

    在C#中DateTime是一个包含日期.时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式. 目录 1. 分类 2. 制式类型 3. ...

  3. 深入理解MySql子查询IN的执行和优化

    IN为什么慢? 在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕.例如: SELECT driver_id FROM driver where driver_id in (SELECT dr ...

  4. python黑魔法 -- 内置方法使用

    很多pythonic的代码都会用到内置方法,根据自己的经验,罗列一下自己知道的内置方法. __getitem__ __setitem__ __delitem__ 这三个方法是字典类的内置方法,分别对应 ...

  5. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  6. AJAX 大全

    本章内容: 简介 伪 AJAX 原生 AJAX XmlHttpRequest 的属性.方法.跨浏览器支持 jQuery AJAX 常用方法 跨域 AJAX JsonP CORS 简单请求.复制请求.请 ...

  7. .NET平台和C#编程的总结

    第一章   简单认识.NET框架    (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework ...

  8. slf4j中的MDC

    slf4j中MDC是什么鬼 slf4j除了trace.debug.info.warn.error这几个日志接口外,还可以配合MDC将数据写入日志.换句话说MDC也是用来记录日志的,但它的使用方式与使用 ...

  9. javaScript之BOM操作1

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...