为了方便维护,以后无论如何,数据库操作一定使用封装的强类型,或者自己封装的数据操作类。后记,使用分布式查询解决多个数据库之间的查询操作。
2010-09-09 12:47
751 查看
一、项目打了之后,我操作数据库的常用的办法三种。
第一种使用我之前封装操作SQL的数据库操作类,直接运行SQL语句
第二种直接使用.net的SQL操作方法直接运行SQL语句
第三种使用系统封装的强类型Dataset
不常用的是使用自己封装的数据库操作类
二、现在矛盾的地方,我的项目是大项目中其中之一也能完全独立出去。
如果完全独立出去,出了后台查询使用已经封装好了的,其他的数据库得使用自己的一套。
如果不完全独立出去,那么大系统与我的项目使用同一数据库。
现在的情况比较乱,如果在两个系统在同一个数据库的时候,可能表名字会修改,数据库的名字会改,用户名与密码会改。另外在对数进行类似表结构这样的升级的时候都会出现问题。
三、解决办法,所有数据库封装与UI完全封开,以后仅仅修改数据库操作的部分。
后记:对于上面提到的第二点的那个矛盾,突然意识到如果使用分布式查询不就可以很好解决此问题。
例如
一、在不同情况下使用不同数据库里的表。人员表,如果我使用我自己的人员表,我建立一套自己的人员表,如果使用大系统里的人员表,我可以用视图封装一个与我系统中名称一样的分布式查询视图。
二、对于一个查询同时使用两个数据库里的表。例如字典表,可能两个数据库里面都有字典表,只要把表结构做的城统一的。我就可以通过分布式查询直接返回一个包含两个数据库表的查询结果。
当然对于查询操作我可以封装为视图或者所有的数据库操作使用存储过程。
这样的好处就是屏蔽了访问不同数据库时合并数据的操作。在数据库中直接解决,程序所面对的数据就像在一个数据库里一样。
当然对于一些复杂的系统例如可能要查询多个可能都是不同版本的数据系统,那么直接在数据库上解决分布式查询就有些困难了。这时候可以尝试封装为类库。所有的数据库查询操作封装成类库里的函数操作。由于.net提过linq功能,我可以把各个数据库符合查询要求的结果数据先加载到Dataset中,然后使用linq再进行整合查询,例如按某一字段排序。
个人觉得,分布式的查询智能是尽可能简单,能够不分布式查询的就分布式查询。对于不同数据直接的依耐性越重,程序的维护越复杂。
另外在搜索过程中发现对于远程调用方面对于分布式查询也有着很好的应用,我并不是很了解这块。目前使用的远程调用是PHPRPC服务,考虑学习下.NET Remoting
第一种使用我之前封装操作SQL的数据库操作类,直接运行SQL语句
第二种直接使用.net的SQL操作方法直接运行SQL语句
第三种使用系统封装的强类型Dataset
不常用的是使用自己封装的数据库操作类
二、现在矛盾的地方,我的项目是大项目中其中之一也能完全独立出去。
如果完全独立出去,出了后台查询使用已经封装好了的,其他的数据库得使用自己的一套。
如果不完全独立出去,那么大系统与我的项目使用同一数据库。
现在的情况比较乱,如果在两个系统在同一个数据库的时候,可能表名字会修改,数据库的名字会改,用户名与密码会改。另外在对数进行类似表结构这样的升级的时候都会出现问题。
三、解决办法,所有数据库封装与UI完全封开,以后仅仅修改数据库操作的部分。
后记:对于上面提到的第二点的那个矛盾,突然意识到如果使用分布式查询不就可以很好解决此问题。
例如
一、在不同情况下使用不同数据库里的表。人员表,如果我使用我自己的人员表,我建立一套自己的人员表,如果使用大系统里的人员表,我可以用视图封装一个与我系统中名称一样的分布式查询视图。
二、对于一个查询同时使用两个数据库里的表。例如字典表,可能两个数据库里面都有字典表,只要把表结构做的城统一的。我就可以通过分布式查询直接返回一个包含两个数据库表的查询结果。
当然对于查询操作我可以封装为视图或者所有的数据库操作使用存储过程。
这样的好处就是屏蔽了访问不同数据库时合并数据的操作。在数据库中直接解决,程序所面对的数据就像在一个数据库里一样。
当然对于一些复杂的系统例如可能要查询多个可能都是不同版本的数据系统,那么直接在数据库上解决分布式查询就有些困难了。这时候可以尝试封装为类库。所有的数据库查询操作封装成类库里的函数操作。由于.net提过linq功能,我可以把各个数据库符合查询要求的结果数据先加载到Dataset中,然后使用linq再进行整合查询,例如按某一字段排序。
个人觉得,分布式的查询智能是尽可能简单,能够不分布式查询的就分布式查询。对于不同数据直接的依耐性越重,程序的维护越复杂。
另外在搜索过程中发现对于远程调用方面对于分布式查询也有着很好的应用,我并不是很了解这块。目前使用的远程调用是PHPRPC服务,考虑学习下.NET Remoting
相关文章推荐
- 使用OPENDATASOURCE和OPENROWSET在不同类型的数据库之间导入导出数据
- Windows 7下OpenGL如何配置(网上有教程,这里做部分修改,也是为了方便自己以后使用)
- 数据库的连接、索引和Redis的五种数据类型及其操作命令、使用场景
- Hive基础(2): 数据类型、数据库、表、字段、交互式查询的基本操作
- MVC操作LocalDB数据库,通过电影类型和名称来查询电影,在控制器里写的方法以及页面代码,自己参考。
- 最近做了多个不同的数据库操作的项目,没事干了就试着封装一些基本的数据库操作,以后能自己用自己的类
- 浅谈andorid的四种数据存储方式(也是为了方便自己以后查阅,会及时更新)
- MySQL查询中使用Concat关键字来拼接中文字符乱码(不同的数据类型拼接)解决方式
- easyui.utils.js 自己封装的 使用easyui过程中方便操作和取值(一)
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
- ajax根据ID查询数据库并返回Json格式数据返回js,使用append显示到页面。判断json值为[]或者[[]]的问题。
- mysql操作数据库语句整理(方便以后使用)
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
- 自己编写的Windows字符串类 封装字符串格式转换和常用操作 方便使用
- 把对数据库的增删改查封装到类中,方便以后的使用。
- 使用 ADO 解决PostGis数据库 Bytea类型 数据读写问题
- android: activity之间传递复杂数据类型[使用Serializable序列化或者Parcelable序列化]
- [原]用c#做了一个桌面程序用来分离excel文件里的数据时出现“操作必须使用一个可更新的查询”错误的解决
- j2se使用数据模型和JTable完成数据库读取和查询操作