如何打造自己的数据访问层三

发表于:2011-8-01 09:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:flysoul(cnblogs)    来源:51Testing软件测试网采编

  上一篇如何打造自己的数据访问层二中,我们已具体实现了数据访问层对应的功能,该进行收尾工作了,先来看段代码,试试上一篇实现的功能:

  1. string sqlText = "SELECT ID, NAME, VAL FROM TEST";  
  2. string columns = "ID, NAME, VAL";  
  3. DataSet ds = new DataSet();  
  4. DataExecutor execObj = new MSSqlExecutor();  
  5. DataMapping map = new DataMapping();  
  6. map.ExecuteObject = execObj;  
  7. map.TableName = "TEST";  
  8. map.KeyColumns = "ID";  
  9. map.Columns = "ID, NAME, VAL";  
  10. DataMapping map = new DataMapping(execObj.GetInstant(), "TEST""ID", columns);  
  11. map.Fill(sqlText, "TEST");  
  12. map.SetCommands(DataCommandType.Insert | DataCommandType.Update | DataCommandType.Delete, ds);  
  13. //DataTable方式进行增、删、改 
  14. bool isSuccess = execObj.Update();

  果然已经完成了对数据库的读写操作了,至少不用再写大段的参数传递代码,功能都已经实现了,是不是就完成了?

  仔细看看上面的代码,实际上还有问题尚未解决,看看这句:

DataExecutor execObj = new MSSqlExecutor();

  竟然在代码里直接实例化一个MSSql的执行对象,这样一开始提出的数据库之间的切换问题根本就没有从本质上解决。

  再回过头来看上一篇,有一个方法public IDbConnection GetConn(),用来获取数据连接对像,之前并没有说明其如何实现。

  我们知道DBConnection有两个关键信息:

  1、与哪种类型的数据库产生连接,这个前面已经解决了。

  2、传递与数据库连接的帐号信息、访问库信息的ConnectionString,这个并没有提及。

  看看第二点以前是怎么做的:

  1. public IDbConnection GetConn()  
  2. {  
  3.     if (conn != null)  
  4.     {  
  5.         return conn;  
  6.     }  
  7.     conn = new SqlConnection();  
  8.     conn.ConnectionString = 连接字串;  
  9.     return conn;  
  10. }

  上面出现了连接字串,这个字串从哪来?

  总结下,要完成最终的数据访问输出,还需要解决两个问题:

  1、动态进行不同数据库之间的切换。

  2、解决数据连接字串的来源问题。

  接着就来解决这两问题,先解决第二个问题,有个比较简单的方法,将连接字串写入配置文件中去,数据访问层只需知道它传递过来KEY值:

  1. <appSettings>  
  2.     <add key="ConnStr" value="server=.;uid=sa;password=123456;database=DATA_BASE;max pool size=300"/>  
  3. </appSettings>

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号