![]() | CYQ.Data 数据层框架CYQ.Data 是一款由路过秋天创作的支持多数据库应用[Txt,Xml,Access,MSSQL,Oracle,SQLite,MySql]的底层数据库操作类库,使用本类库可以轻松快速开发项目(QQ群:6033006)。 |
CYQ.Data 数据框架 版本发布 V1.0
平台动态 |
|
|
| #楼主 |
今天,花了N小时重构了以前的代码,删除了没用到的重截,优化代码,调整结构,重新上路,坚持把路走完!!! 1. CyQ.Data 介绍 DLL下载:点击下载 [大小:56K 没加密没混淆没限制,可放心使用,可直接用Reflector.exe查看源码,后面有开源文章续上] 类库名称空间介绍,上图: 大体情况说明: ![]() ![]() 1:Table文件夹下:自定义实现绑定MDataTable,远离DataTable 2:Cache文件夹下:用于并缓存表结构信息 3:Action文件夹下:主要操作对象 4:SQL文件夹下: DataType:提供C#数据类型和数据库类型的转换等相关信息 SQLHelper:本人精简数据库操作类: Log:用于记录数据操作异常信息 ProcedureSql:,内置查询数据表结构查询语句 OutPutData:内置sql 2000和sql 2005分页存储过程;同时提供帮助类自动生成表或视图枚举
再附说明: 本DLL原则上采取Row[索引]形式进行访问的,为了方便敲点代码,提供用枚举传参方法,内部会自动将枚举转成int,进行索引访问! 对于本系列,请读者尽量不与生成[实体类+反射组合查询语句]的型框架做相关的比较讨论!
功能特点如下: l 支持SQL Server 2000/2005/2008 .Net 2.0。其它数据库,不支持 l 只需要配置数据库链接,例如: <connectionStrings> <add name="Conn" connectionString="Server=.;database=CQSpace;uid=sa;pwd=123456"/> </connectionStrings> l 简单易用,简单使用见于下面介绍。
ps:由于本次调整代码量多,所以不知会不会改出什么问题,目前本机测试暂没发现问题,如发现bug请下面留言。
2. CyQ.Data 使用说明
该工具基于.NET 2.0,所以不能用在.NET 1.1的工程。 首先给你的工程添加Cyq.Data引用即可! 项目开始之前,请调用Cyq.Data.SQL.OutPutData下的静态方法,生成相应数据的分页存储过程如: ![]() ![]() //生成sql2005带分页的存储过程 Response.Write(CYQ.Data.SQL.OutPutData.GetSelectBaseOutPutToHtmlForSql2005()); //生成sql2000带分页的存储过程 Response.Write(CYQ.Data.SQL.OutPutData.GetSelectBaseOutPutToHtmlForSql2000()); 接着使用OutPutData生成数据库表或视图枚举: ![]() ![]() //生成枚举之后,Copy到一个类文件即可,[需要实体化,因为需要关联数据库,构造函数不传参,默认取Conn里的链接] CYQ.Data.SQL.OutPutData write = new CYQ.Data.SQL.OutPutData(); //输出表枚举 Response.Write(write.OutPutAllTableEnum(CYQ.Data.SQL.OutPutData.TableType.U, CYQ.Data.SQL.OutPutData.FiledDescriptionType.NoDescription)); //输出视图枚举 Response.Write(write.OutPutAllTableEnum(CYQ.Data.SQL.OutPutData.TableType.V, CYQ.Data.SQL.OutPutData.FiledDescriptionType.NoDescription)); 当然里面也有提供对单表的生成方法了。 接着开始项目实战了,下面示例已经过测试: 1:单行数据填充: MAction action = new MAction(TableNames.CQ_Album); if (action.Fill(1)) { lbText.Text = action.Data[CQ_Album.AlbumName].Value.ToString(); action.Close(); }
2:数据更新: MAction action = new MAction(TableNames.CQ_Album); if (action.Fill(1)) { action.Data[CQ_Album.AlbumName].Value = txtAlbumName.Text; action.Update(); action.Close(); }
数据更新方法二: MAction action = new MAction(TableNames.CQ_Album); action.Data[CQ_Album.AlbumName].Value = txtAlbumName.Text; action.Update("id=1"); action.Close();
3:数据删除: MAction action = new MAction(TableNames.CQ_Album); action.Delete(2); action.Close();
数据删除方法二: MAction action = new MAction(TableNames.CQ_Album); action.DeleteByWhere("id=2"); action.Close();
4:数据查询与绑定: 查询所有: MAction action = new MAction(TableNames.CQ_Album); gvTable.DataSource = action.Select(); gvTable.DataBind(); action.Close();
分页查询: MAction action = new MAction(TableNames.CQ_Album); int rowCount; gvTable.DataSource = action.Select(1, 10, "id>10", out rowCount); gvTable.DataBind(); action.Close();
5:多表怎么搞定? A:视图方式,将多表查询放到数据库里成视图,情况和单表一样使用; B:自定义查询语句如: ![]() ![]() string table = "(select A.*,B.Name from CQ_Album A left join CQ_UserInfo U on A.UserID=U.UserID) v"; MAction action = new MAction(table); int rowCount; gvTable.DataSource = action.Select(1, 10, "id>1", out rowCount); gvTable.DataBind(); action.Close(); 当然了,你只要把自定义的sql语句,全放一边去统一管理就行了,界面上就不要出现sql语句了!
附加: 本人从新的实体框架上引入SetTo与GetFrom方法,下一篇改造版本将从索引赋/取值中解放,敬请关注:
![]() ![]() //原索引设置值: action.Data[CQ_Album.AlbumName].Value = txtAlbumName.Text; //改进后成: action.GetFrom(txtAlbumName); //原索引读值: txtAlbumName.Text=action.Data[CQ_Album.AlbumName].Value //改进后成: action.SetTo(txtAlbumName);
OK,本开篇就点到为止,欢迎读者留言! ![]() |
发表评论
论坛公告
帖子搜索
最新帖子
最新评论
- 请教博主。我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年就过了!!!!