![]() | CYQ.Data 数据层框架CYQ.Data 是一款由路过秋天创作的支持多数据库应用[Txt,Xml,Access,MSSQL,Oracle,SQLite,MySql]的底层数据库操作类库,使用本类库可以轻松快速开发项目(QQ群:6033006)。 |
CYQ.Data 数据框架 版本发布 V1.4
平台动态 |
|
|
| #楼主 |
继上一版本V1.3版本发布到现在,时隔N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力求让大伙相对满意: 升级说明: 本次升级只是针对易用性增加功能或优化代码及方法,并未发现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"/> < SPAN>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"/> < SPAN>appSettings> <connectionStrings> <add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/> <add name="LogConn" connectionString="Conn"/> < SPAN>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 帮助文档:点击下载 ![]() |
发表评论
论坛公告
帖子搜索
最新帖子
最新评论
- 请教博主。我mysql的提示 V5.7.7.4 MySql.xxxx:check the tablename "tbl_site_info" is exist? error:ExeDataReader():Expression #1 of ORDER BY clause is not in SELECT list, references column 'information_schema.s1.ORDINAL_POSITION' which is not in SELECT list; this is incompatible with DISTINCT 配置如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Conn" connectionString="host=192.168.3.101;Port=3306;Database=xxxxx;uid=root;pwd=2017" providerName="MySql.Data.MySqlClient"/> </connectionStrings> </configuration>
- 查询语句有点问题,软件启动时查询语句可以从数据库查询出数据,软件一直运行时无论怎么修改数据库,查询出来的还是老数据,不知道是为什么
- 我语句中用到了union all而且两个查询都有查询条件,action.select总是不成功,不知道有没有什么好的解决办法,谢谢
- 大神,如果我想通过一个对象(从数据映射过来的)要插入的话,我需要遍历字段然后每个set一下吗?有没有更好的方法??
- 真心好用,想问下秋天直接拼写sql怕注入吗
- V4.5后,好多方法都改变了,求来个新的日志帮助
- 請問大神V5源碼要多少錢 我是和交流過的
- 楼主,,从数据库里查出来并绑定datagridview,但是显示的都是数据库里的英文名,怎么改??好纠结啊这个。。。。
- 我想问一下,主从表添加怎样处理
- 10年就过了!!!!