共享一份C#数据库持久层框架设计思路及其部分代码(原创)
2012-07-02 13:40
169 查看
开发背景:
C#访问数据库无疑是非常方便的, 微软提供的数据库访问类 SqlHelper可以让我们轻松搞定数据库的相关操作,这相比于C++,java等有着得天独厚的优势,但是在一个项目中,我们通常需要书写大量的Sql语句,新增、修改、删除这一些最基础的sql虽然写起来并
不复杂,但是就算是由过几年工作经验的人,依然感到繁琐,对于新手来说,拼接sql语句也是经常容易出错的,我们不禁想,有没有一种可以不拼接Sql的底层呢?
AK2.0设计思路:
作为一个优秀是程序员,就是要将自己的想法化作代码来实现,想到就要去做,哪怕失败了,我们也不会去后悔什么,那下面说一下思路:
举个很简单的例子:insert into tableA values(1,2,3) 我们能想到的最简单的调用方式是什么?那就是这些insert 这些最基础的代码我们的开发人员不用去考虑,可以直接去传递表名和值,换句话说,我们只需要创建一个对象,然后传递表名和要插入的字段即可,这
样我们的程序就简化多了,当然update、delete和select都是一样
AK2.0简介:
AK2.0为本人及其团队独立开发的数据库持久层框架,经过2个月的开发,半年多的测试,目前一定初步稳定,版本也由1.0升级到2.0,其主要实现底层SQL自动拼接,自动处理,不废话了,直接贴出部分代码,希望可以给大家带来一些启发:
我们要写一个查询语句为:Select ID,Name from tableA where ID=XXX ,那么下面为使用AK2.0的调用方式:
public DateTable GetTableAFeild(int id)
{
IDBOprate dbo = new SelectSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddFeild("ID", null);
dbo.AddFeild("Name", null);
dbo.AddWhere("ID", id, "=");
dbo.runSQL();
return dbo.dt;
}
参数介绍:连接到那个数据库(ConnLinkQPAcc),要做什么操作(SelectQL),操作那个表(tableA),操作那个字段(ID,Name)查询条件是什么(id=xxx) ,跨库肯定要支持的,所以直接在调用的时候传递参数了,可能您在第一次看的时候感觉也算有点麻烦,那么你继续看下去。
我们要写一个修改语句为: Update tableA set pwd='dsds' ,name ='张三' where id=xxx,那么下面为使用AK2.0的调用方式:
public int UpdtaeTableAFeild(string pwd,string name,int id)
{
IDBOprate dbo = new UpdateSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddFeild("pwd", pwd);
dbo.AddFeild("Name", name);
dbo.AddWhere("ID", id, "=");
Return dbo.runSQL();
}
参数介绍:连接到那个数据库(ConnLinkQPAcc),要做什么操作(UpdateSQL),操作那个表(tableA),操作那个字段(ID,Name),值是什么(pwd,name),查询条件是什么(id=xxx)
删除和新增直接贴代码,就不解释了,看一样大家是否能看懂:
public int DeleteTableAFeild(string pwd,string name,int id)
{
IDBOprate dbo = new DeleteSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddWhere("ID", id, "=");
Return dbo.runSQL();
}
public int InsertTableAFeild(string pwd,string name)
{
IDBOprate dbo = new InsertSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddFeild("pwd", pwd);
dbo.AddFeild("Name", name);
Return dbo.runSQL();
}
再都看完之后,有什么感觉,哪怕对于一个新手来说,这样的方式都很容易接受,那么OK,这个就是我们要达到的目的
再额外的补充一点:IDBOprate 是一个工厂模式,InsertSQL、UpdtaeSQL都是其生产的,具体请了解工厂设计模式。
欢迎大家提出宝贵的意见,在此特别鸣谢对此版本做出贡献的两位开发人员:Klj,Mrq。
以上纯属个人观点,转载请注明出处
--------------AK:2012-07-02
C#访问数据库无疑是非常方便的, 微软提供的数据库访问类 SqlHelper可以让我们轻松搞定数据库的相关操作,这相比于C++,java等有着得天独厚的优势,但是在一个项目中,我们通常需要书写大量的Sql语句,新增、修改、删除这一些最基础的sql虽然写起来并
不复杂,但是就算是由过几年工作经验的人,依然感到繁琐,对于新手来说,拼接sql语句也是经常容易出错的,我们不禁想,有没有一种可以不拼接Sql的底层呢?
AK2.0设计思路:
作为一个优秀是程序员,就是要将自己的想法化作代码来实现,想到就要去做,哪怕失败了,我们也不会去后悔什么,那下面说一下思路:
举个很简单的例子:insert into tableA values(1,2,3) 我们能想到的最简单的调用方式是什么?那就是这些insert 这些最基础的代码我们的开发人员不用去考虑,可以直接去传递表名和值,换句话说,我们只需要创建一个对象,然后传递表名和要插入的字段即可,这
样我们的程序就简化多了,当然update、delete和select都是一样
AK2.0简介:
AK2.0为本人及其团队独立开发的数据库持久层框架,经过2个月的开发,半年多的测试,目前一定初步稳定,版本也由1.0升级到2.0,其主要实现底层SQL自动拼接,自动处理,不废话了,直接贴出部分代码,希望可以给大家带来一些启发:
我们要写一个查询语句为:Select ID,Name from tableA where ID=XXX ,那么下面为使用AK2.0的调用方式:
public DateTable GetTableAFeild(int id)
{
IDBOprate dbo = new SelectSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddFeild("ID", null);
dbo.AddFeild("Name", null);
dbo.AddWhere("ID", id, "=");
dbo.runSQL();
return dbo.dt;
}
参数介绍:连接到那个数据库(ConnLinkQPAcc),要做什么操作(SelectQL),操作那个表(tableA),操作那个字段(ID,Name)查询条件是什么(id=xxx) ,跨库肯定要支持的,所以直接在调用的时候传递参数了,可能您在第一次看的时候感觉也算有点麻烦,那么你继续看下去。
我们要写一个修改语句为: Update tableA set pwd='dsds' ,name ='张三' where id=xxx,那么下面为使用AK2.0的调用方式:
public int UpdtaeTableAFeild(string pwd,string name,int id)
{
IDBOprate dbo = new UpdateSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddFeild("pwd", pwd);
dbo.AddFeild("Name", name);
dbo.AddWhere("ID", id, "=");
Return dbo.runSQL();
}
参数介绍:连接到那个数据库(ConnLinkQPAcc),要做什么操作(UpdateSQL),操作那个表(tableA),操作那个字段(ID,Name),值是什么(pwd,name),查询条件是什么(id=xxx)
删除和新增直接贴代码,就不解释了,看一样大家是否能看懂:
public int DeleteTableAFeild(string pwd,string name,int id)
{
IDBOprate dbo = new DeleteSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddWhere("ID", id, "=");
Return dbo.runSQL();
}
public int InsertTableAFeild(string pwd,string name)
{
IDBOprate dbo = new InsertSQL("ConnLinkQPAcc");
dbo.TableName = "tableA";
dbo.AddFeild("pwd", pwd);
dbo.AddFeild("Name", name);
Return dbo.runSQL();
}
再都看完之后,有什么感觉,哪怕对于一个新手来说,这样的方式都很容易接受,那么OK,这个就是我们要达到的目的
再额外的补充一点:IDBOprate 是一个工厂模式,InsertSQL、UpdtaeSQL都是其生产的,具体请了解工厂设计模式。
欢迎大家提出宝贵的意见,在此特别鸣谢对此版本做出贡献的两位开发人员:Klj,Mrq。
以上纯属个人观点,转载请注明出处
--------------AK:2012-07-02
相关文章推荐
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- [资源共享]C#+AE构建GIS桌面端应用系统框架-全代码
- unity3D 游戏开发之工程代码框架设计思路MVC
- 从零开始编写自己的C#框架(9)——数据库设计与创建
- [资源共享]C#+AE构建GIS桌面端应用系统框架-全代码
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库
- C# CodeFirst(EF框架)代码优先创建数据库
- [朝花夕拾]基于C#的模拟仿真平台设计(部分)及服务器异步通信代码
- 按Sybase的PowerDesigner工具设计的数据库模型 ---> 解析生成能兼容多种数据库的相应的C#底层代码
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 按Sybase的PowerDesigner工具设计的数据库模型 ---> 解析生成能兼容多种数据库的相应的C#底层代码
- 牛腩购物9 用户表设计/动软生成器/金钱字段decimal(18, 2)/ 注册的时候的前台js判断/后台代码判断/正则表达式软件/RegexBuddy/设置数据库字段的唯一性约束/如何获取控件在前台html的id值/如何将C#的后台正则换成js的正则
- 代码开源(1)——数据库部分操作封装C#实现
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 密保问题数据库设计思路和代码实现
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 从零开始编写自己的C#框架(9)——数据库设计与创建
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- [原创]C# C/S结构数据库系统框架详解及源代码下载