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版本升级修改记录如下:

复制代码
ExpandedBlockStart.gif
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

示例

复制代码
ExpandedBlockStart.gif
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:

复制代码
ExpandedBlockStart.gif
        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:

复制代码
ExpandedBlockStart.gif
        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配置如下

ExpandedBlockStart.gif
< 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"设置成一个类的成员变量能传递,如下:

复制代码
ExpandedBlockStart.gif
// 数据库链接管理类
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));

导出结果示例

复制代码
ExpandedBlockStart.gif
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 ));

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

复制代码
ExpandedBlockStart.gif
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配置示例

复制代码
ExpandedBlockStart.gif
< 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 全局缓存类

复制代码
ExpandedBlockStart.gif
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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
数据采集 JSON Java
揭秘阿里巴巴:如何通过API实时捕获中国市场商品数据
阿里巴巴提供了丰富的API接口,使得第三方开发者可以实时捕获中国市场商品数据。以下是一些关键步骤和要点,帮助你揭秘如何通过阿里巴巴的API实现这一目标:
|
2月前
|
监控 数据挖掘 API
商品评价聚合:利用API从多个来源获取数据的详细指南
在当今电子商务的繁荣发展下,消费者在做出购买决策前越来越依赖商品评价。这些评价不仅反映了产品的实际使用体验,也直接影响着品牌信誉和销售业绩。为了全面了解消费者的声音并优化产品,企业需要从各种销售渠道收集和分析商品评价。本文将详细介绍如何通过API集成不同数据源的商品评价。
|
2月前
|
机器学习/深度学习 搜索推荐 API
商品信息全景图:API接口在聚合商品数据中的应用
在电子商务的世界中,API接口是连接不同服务和数据的桥梁。特别是在商品信息的聚合上,API接口扮演了至关重要的角色,它允许开发者从多个来源收集、整合并展示商品信息,从而为消费者提供全面且一致的购物体验。本文将深入探讨API接口在聚合商品数据中的应用,并通过具体的代码示例来揭示其工作原理。
|
2月前
|
XML 监控 API
跨平台销售策略:通过API同步不同市场的商品数据
在数字化时代,零售商和品牌经常需要在不同的在线市场上展示和销售商品。为了保持竞争力并确保一致的客户体验,商家必须确保其商品信息在所有渠道上保持同步和准确。这种需求催生了跨平台销售策略,其中一个关键组成部分就是利用应用程序编程接口(API)来同步不同市场的商品数据。
|
3月前
|
搜索推荐 安全 API
API接口的艺术:如何巧妙获取商品数据
在数字时代,API接口已经成为连接不同软件系统、共享数据的桥梁。尤其在电商领域,商品数据的实时获取和处理对于提供个性化服务、优化用户体验至关重要。本文将深入探讨API接口的艺术,以及如何通过它们高效地获取和管理商品数据。
|
2月前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
2月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
55 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
1月前
|
JSON Java API
教你如何使用API接口获取数据
随着互联网技术的发展和应用的普及,越来越多的系统和应用提供API接口供其他系统和应用进行数据交互。通过API接口,我们可以获取到各种各样的数据,例如天气预报、股票行情、新闻摘要等等。本文将介绍如何使用API接口获取数据,并附有示例代码。
|
24天前
|
供应链 搜索推荐 BI
深入了解淘宝原数据:获取API接口及其使用场景
在当今数字化的时代,对于电商行业来说,数据具有极大的价值。淘宝作为中国最大的综合电商平台,拥有庞大的商品信息和用户数据。对于开发者和企业来说,淘宝原数据的获取和分析是实现个性化服务和精准营销的基础。本文将介绍如何通过API接口获取淘宝原数据,以及数据的使用场景。
|
1月前
|
数据采集 API 开发者
调用API接口获取小红书笔记详情数据(小红书怎么推广)
小红书平台对于其API的使用有严格的规定和限制,并且并非所有的功能和数据都通过公开API提供。关于获取小红书笔记详情的API,以下是一些建议和指导: