博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CYQ.Data V5 从入门到放弃ORM系列:教程 - MProc类使用
阅读量:5797 次
发布时间:2019-06-18

本文共 3469 字,大约阅读时间需要 11 分钟。

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         /// 17         /// 执行SQL语句18         /// 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 UserID=@UserID");35                 proc.Set("UserID", 1);36                 string name = proc.ExeScalar
();37 OutMsg(name);38 39 proc.ResetProc("update users set password=123 where name=@name");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
dtList = proc.ExeMDataTableList();52 OutMsg(dtList.Count);53 proc.EndTransation();54 }55 }56 ///
57 /// 执行存储过程58 /// 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
dic=proc.OutPutValue as Dictionary
;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下载地址:

2:谢谢支持!

本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/p/5693369.html

你可能感兴趣的文章
oracle导入导出小记
查看>>
聊一聊log4j2配置文件log4j2.xml
查看>>
NeHe OpenGL教程 第七课:光照和键盘
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
Php实现版本比较接口
查看>>
删除设备和驱动器中软件图标
查看>>
Android studio开多个窗口引起的问题
查看>>
第四章 TCP粘包/拆包问题的解决之道---4.1---
查看>>
RedisRepository分享和纠错
查看>>
html语言
查看>>
Unity接入谷歌支付
查看>>
laravel 使用 vue (gulp)
查看>>
QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类...
查看>>
HTTP之二 http 301 和 302的区别
查看>>
从源码看集合ArrayList
查看>>
Gephi
查看>>
git 入门宝典
查看>>
spring-boot支持websocket
查看>>
菜鸟笔记(一) - Java常见的乱码问题
查看>>
移动web端自定义tap与模拟hover效果
查看>>