CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)

继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源]

 

N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力求让大伙相对满意:

对于:bug反馈、优化建议、及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载

升级说明:

本次升级只是针对易用性增加功能或优化代码及方法,并未发现V1.3版本存在任何bug,
因此,对于V1.3版本,大伙可放心使用,同时也已开放源码。
若对于本V1.4版本改进功能感兴趣,也可尽情使用本版本dll。
欢迎来客继续使用并留言参与讨论。

 

补充说明

V1.4版本辅助工具已经发布,详见:CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十)

 

本次V1.4版本升级修改记录如下:


1:SQLHelper/DataType/Log 修改类访问修饰符,不对外开放

CYQ.Data 名称空间
1:MProc:ExeScalar方法修改为泛型方法 public T ExeScalar<T>()
2:MProc:由SQLHelper修改访问修饰不对外开放引起,继承变更为内置类。
3:MProc:改返回DataTable为MDataTable,隐藏掉返回的SqlDataReader
4:MProc:修改几个方法名称,参数实现自动增加"@"前缀
5:MAction:默认所有操作开启事务支持,直到调用Close()或EndTransation()或发生异常时,事务才结束。
6:MAction:增加智能检测,构造函数不需要传入数据库配置项。多数据库应用时,约定枚举生成为:[[U/V/P]_+数据库名+Enum],配置文件数据库链接配置项为[数据库名+Conn]

CYQ.Data.SQL名称空间
1:SQLHelper:增加事务支持
2:SQLHelper:优化代码,删除没用到的方法
3:SQLString:where条件过滤掉“--”注释号与";"分号
4:OutPutData:增加对存储过程参数的导出
5:OutPutData:增加对于多数据库项目的导出,对于表和视图的枚举导出修改成[[U/V/P]_数据库名+Enum]格式

6:OutPutData:增加生成日志表功能

7:Log:修改WriteLog返回类型为void,在写数据库记录异常日志失败后时抛出异常

8:DataType:合并数据类型转化方法为两个:GetDbType和GetSqlType,同时注释掉其它附加方法

CYQ.Data.Table 名称空间
1:MDataTable:增加ToDataTable功能


 

CYQ.Data.Cache 名称空间
1:CacheHelper:优化代码,减少代码行数
2:CacheHelper:修改了几个函数名称

其它

同时制作与发布V1.4 API 使用帮助文档

 

 以下针对更新进说明

 

1:SQLHelper/DataType/Log 修改类访问修饰符,不对外开放

这个不用多解释了吧,就是通过CYQ.Data.SQL名称空间下,看不到这三个类了。

 

 

CYQ.Data 名称空间

一:MProc 存储过程操作类

1:因SQLHelper修改访问修饰不对外开放,继承方式变更为内置类

2:ExeScalar由返回object对象改成泛型方法,示例

MProc proc = new MProc(ProcNames.GetFirstUserID);
int userID=proc.ExeScalar<int>();
proc.Close();

 

3:删除方法:ExeDataReader与ExeDataTable;增加方法:ExeMDataTable

示例

MProc proc = new MProc(ProcNames.GetMessageList);
MDataTable mtable= proc.ExeMDataTable();
proc.Close();
gvProcMessage.DataSource = mtable;
gvProcMessage.DataBind();

 

4:方法名称修改:AddParas改成Set方法[并自动增加@前缀];ClearParas改成Clear

示例


MProc proc = new MProc(ProcNames.GetMessageList);
proc.Set(GetMessageList.UserID, 1);//说明:OutPutData增加了对存储过程参数的枚举导出。
MDataTable mtable = proc.ExeMDataTable();
proc.Close();
gvProcMessage.DataSource = mtable;
gvProcMessage.DataBind();

 

二:MAction 主操作类

1:增加事务,并默认所有操作均开启事务,默认直到调用Close方法时提交事务。同时增加提前事务结束方法:EndTransation(),

示例1:


        MAction action = new MAction(TableNames.Users);
        if (action.Fill(7))
        {
            action.Set(Users.UserName, "用户名被修改了");
            if (action.Update())//第一步更新成功
            {
                action.Set(Users.UserName, "aaaaaaaaaaa");
                if (action.Update("td>3"))//并不存在td字段,更新失败。自动调用Close(),事务被回滚
                {
                    action.Close();
                }
            }
        }

 

示例2:


        MAction action = new MAction(TableNames.Users);
        if (action.Fill(7))
        {
            action.Set(Users.UserName, "用户名被修改了");
            if (action.Update())
            {
                action.EndTransation();//提交结束事务,此时用户名称已修改成功。
                action.Set(Users.UserName, "aaaaaaaaaaa");
                if (action.Update("td>3"))//更新失败,不再引发事务。
                {
                    action.Close();
                }
            }
        }

 

 

2:多数据库应用加强,增加表枚举约定数据库链接配置

对于多数据库应用,你仍可以使用以下的方法实例一个MAction

MAction action = new MAction(TableNames.Users,"CYQ");

通过构造函数的重载实现新的数据库链接。

web.config对CYQ配置如下

<connectionStrings>
    <add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/>
    <add name="CYQ" connectionString="server=192.168.1.48;database=CYQ;uid=sa;pwd=3dfe323ft"/>
</connectionStrings>

当然,为了全局统一管理,你可能把"CYQ"设置成一个类的成员变量能传递,如下:


//数据库链接管理类
public class DataBaseLink
{
        public const string CYQ = "CYQ";
        public const string Other= "Other";

//调用
MAction action = new MAction(TableNames.Users, DataBaseLink.CYQ);

以上方式虽然可以做到,不过本次增加的约定方法,可以让你省略对数据库链接的管理,示例

MAction action = new MAction(U_MessageEnum.Users);

对应的数据库链接配置为

<add name="MessageConn" connectionString="server=.;database=Message;uid=sa;pwd=123456"/>

其约定为:

        表约定:U_数据库名+Enum ->对应配置链接为 数据库名+Conn
     视图约定:V_数据库名+Enum ->对应配置链接为 数据库名+Conn
存储过程约定:P_数据库名+Enum ->对应配置链接为 数据库名+Conn

 

当然了,简单的说其实不用管那么多,因为OutPutData已增加对其约定枚举的导出,详见下面的OutPutData相关介绍。

 

CYQ.Data.SQL 名称空间

一:SQLHelper 底层数据库操作类,已封剑归隐,假装不涉人世

1:增加底层对事务的支持

2:删除没用到的方法与属性如

方法:ExeDataTable:ExeXmlScalar
属性:Parameters

 

二:SQLString 内部SQL字符串组合类

对where条件增加对符号“--”及“;”的过滤

 

 

三:OutPutData 主要输出类,包括存储过程输出与执行/表视图存储过程枚举输出

1:增加对存储过程参数的导出

导出方法示例

CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
Response.Write(data.OutPutAllTableEnum(TableType.P,FiledDescriptionType.NoDescription,false));

导出结果示例


namespace MessageEnum
{
    public enum ProcNames{GetUserList,GetMessageList,GetFirstUserID}
    #region 存储过程参数枚举
    public enum GetUserList{ }
    public enum GetMessageList{UserID }
    public enum GetFirstUserID{}
    #endregion
}

 

2:多数据库方式,增加对约定方式的导出

导出方法示例,区别仅在最后一个参数设置为“true”

CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
Response.Write(data.OutPutAllTableEnum(TableType.P,FiledDescriptionType.NoDescription,true));

导出结果示例,区别仅在存储过程枚举名称


namespace MessageEnum {
public enum P_MessageEnum {GetUserList,GetMessageList,GetFirstUserID}
#region 存储过程参数枚举 
public enum GetUserList { UserID}
public enum GetMessageList { UserID}
public enum GetFirstUserID { }
#endregion

 

3:增加生成日志记录表方法

用法示例[如果该表已存在,则抛出异常提示]

CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
Response.Write(data.ExeCreateLogTable().ToString());

 

 

四:Log 数据库异常日志记录类

web.config配置示例


<appSettings>
    <add key="IsWriteLog" value="true"/>
</appSettings>
<connectionStrings>
    <add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/>
    <add name="LogConn" connectionString="Conn"/>
</connectionStrings>

说明

1:如果记录日志,需要创建异常日志表用于记录[详见OutPutData关于创建日志记录表的用法]
2:在写数据库记录异常日志失败后或不启用日志记录时有异常则抛出
3:以上示例在链接库链接配置的链接字符串,设置为Conn表示取Conn配置文件的链接字符串。

 

 

五:DataType 数据库类型与C#类型转换类

合并方法并优化了代码,同时修改了内部方法名称。内部内不对外开放,不做过多解释了。

 

CYQ.Data.Table 名称空间

一:MDataTable 自定义的Table类,支持控件绑定

增加ToDataTable方法,对于需要用到Select/Fiter/或其它复杂操作时,可切换过去操作。

 

 

CYQ.Data.Cache 名称空间

一:CacheHelper 全局缓存类


1:优化了代码,减少代码行数
2:修改几个方法名称

使用示例:
 实例化: CacheManage cache=CacheManage.Instance;
 添加:   cache.Add("路过秋天",new MDataTable);
 判断:   if(cache.Contains("路过秋天"))
          {
 获取:       MDataTable table=cache.Get("路过秋天") as MDataTable;
          }

 

V1.4版本CYQ.Data.dll:点击下载

V1.4版本 API 帮助文档:点击下载

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

http://www.cnblogs.com/cyq1162/archive/2010/08/31/1812621.html

时间: 2025-01-30 12:38:19

CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)的相关文章

CYQ.Data 轻量数据层之路 优雅V1.4版本 框架开源

开源说明 本次开源针对最新版本V1.4版本,相关更新见:CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九) bug反馈.优化建议.及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载   相关产品 1:配套API帮助文档 2:配套辅助工具 3:配套使用说明   相关产品简略说明 1:API 文档截图一张   2:辅助工具截图一张   3:使用帮助 1:CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二) 2:CYQ.Data

CYQ.Data 轻量数据层之路 强势V1.5 问世 支持winform下使用(十七)

继V1.4版本已过N天,同时V1.4版本也已开源,见:CYQ.Data 轻量数据层之路 优雅V1.4版本 框架开源   由于网友强烈反映需要在winform下开发,因此本次版本升级主要是增加对winform的支持,力求让大伙相对满意: 对于:bug反馈.优化建议.及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载   附言:如果对本框架有兴趣,请激昂纠纠的.热情点下推荐~   升级说明: 本次更新修正两个小bug: 1:生成sql2000的枚举语句 2:MDa

CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源

本篇对框架开源进行说明:   提前说明: 1:最近有很多友人没有留言就加群了,导致被拒绝,这此说声抱歉啦.    不过规则还是要遵守的,毕竟人数有限.    如果只是想着可有可无的看,下面有一份反编绎源码,基本也不影响高手查看了. 2:另外也有个别留了言没加群的,也只能说声音抱歉了,源码不会发到指定的邮箱.    源码会发送到指定邮箱的情况:仅限于公司名义,同时站内信有消息,才会特别去发邮件的.       本次开源针对最新版本V1.3版本,相关更新见:CYQ.Data 轻量数据层之路 华丽升级

CYQ.Data 轻量数据层之路 使用篇-裸身走走天涯 视频 B (十九)

前言: 话说一回生二回熟,这一次录制相对花的时候少了一些了. 不过也费了不少劲,才终于把这个B给弄出来.     接下来说明几乎和上节一样了: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二)  的附加视频教程. 本次录制为文章后半部分,增加了个注释说明.   这本次录制的视频上传于-秋色园: 注意如果要看清晰版本,要点击视频下面的:查看原始大小的动画 本次视频大小分辨率为:1024*768,依旧坚持走高清.无码的路线,为观众提供良好视觉享受. 同样:如果直

CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二)

其实本来是不想写使用帮助的,因为在以下的文章中,都有大量的示例存在:   CYQ.Data 轻量数据层之路 应用示例一 留言版(四) CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五) CYQ.Data 轻量数据层之路 应用示例二 在线聊天(六) CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)   不过很多人还是很懒啊,一进群就用问怎么用. 发个文章路径让其看吧,又说太麻烦,使用复杂,于是想了想,还是写写使用教程,让这部分懒人速成一下.   当前最新版本

CYQ.Data 轻量数据层之路 使用篇-辅助工具枚举生成器 视频 C (二十)

说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十)   的附加视频教程. 本次视频介绍了使用工具创建存储过程/生成日志表/生成枚举文件等相关操作,同时以示例实践.   这本次录制的视频上传于-秋色园: 注意如果要看清晰版本,要点击视频下面的:查看原始大小的动画 本次视频大小分辨率为:1024*768,依旧坚持走高清.无码的路线,为观众提供良好视觉享受. 同样:如果直接下载观看时最好设置好宽和高,不然清晰度就没保证了.   swf文件下载:点击下载 作者:

CYQ.Data 轻量数据层之路 终极升级(二)

在上一篇:CYQ.Data 轻量数据层之路 开篇介绍(一)中,我们介绍了基本的类库与使用介绍.   上篇留言中虽然感觉好像很平静,不过不难想象,大伙仅勿勿一眼一扫而过的那种情景: 一个很沉重的心结,一直在很多开发人员的心里挥之不去:实体类. 大伙似乎都很排拆没有实体类的数据层框架,仅因早于习惯了ORM?   其实,我记得我第一次毕设的时候,也是有实体类的: 还记得很久前,毕设做的是仿QQ空间的CQ-Space空间,借用了CodeSmith生成实体类[里面集合了增删改查],来操作数据库, 也感受到

CYQ.Data 轻量数据层之路 抢先体验版本功能说明演示 (二十九)

本系列所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 本系列所有相关下载:CYQ.Data 轻量数据层之路 bug反馈.优化建议.最新框架下载 前言:   一直都是发布版本才写文章,这次为抢先体验版本[V2.5]做一下简单的功能介绍   以下进行功能更新说明[相比V2.0版本]: 1:修正DebugInfo属性在异常发生时无法取得操作语句的问题 2:MAction增加Bind方法可以轻松绑定DropDownList等控件 3:MDataTable增加ToList<T>泛型方

CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]

前言: 继上一版本:CYQ.Data 轻量数据层之路 V4.3 版本发布[增加对SQLite,MySQL数据库的支持] ,至今已快近3个月了,中间仅有V4.5beta版本供下载,却没正式发布,今天,终于要把V4.5给发布了.   下面看一下新版本的修改记录 实用: 1:MAction:Select方法增加重载:Select(string where); 2:FormatWhere处理了"Parent is null"的"is"关键字;处理"order by