上一篇如何打造自己的数据访问层二中,我们已具体实现了数据访问层对应的功能,该进行收尾工作了,先来看段代码,试试上一篇实现的功能:
- string sqlText = "SELECT ID, NAME, VAL FROM TEST";
- string columns = "ID, NAME, VAL";
- DataSet ds = new DataSet();
- DataExecutor execObj = new MSSqlExecutor();
- DataMapping map = new DataMapping();
- map.ExecuteObject = execObj;
- map.TableName = "TEST";
- map.KeyColumns = "ID";
- map.Columns = "ID, NAME, VAL";
- DataMapping map = new DataMapping(execObj.GetInstant(), "TEST", "ID", columns);
- map.Fill(sqlText, "TEST");
- map.SetCommands(DataCommandType.Insert | DataCommandType.Update | DataCommandType.Delete, ds);
-
- bool isSuccess = execObj.Update();
|
果然已经完成了对数据库的读写操作了,至少不用再写大段的参数传递代码,功能都已经实现了,是不是就完成了?
仔细看看上面的代码,实际上还有问题尚未解决,看看这句:
DataExecutor execObj = new MSSqlExecutor(); |
竟然在代码里直接实例化一个MSSql的执行对象,这样一开始提出的数据库之间的切换问题根本就没有从本质上解决。
再回过头来看上一篇,有一个方法public IDbConnection GetConn(),用来获取数据连接对像,之前并没有说明其如何实现。
我们知道DBConnection有两个关键信息:
1、与哪种类型的数据库产生连接,这个前面已经解决了。
2、传递与数据库连接的帐号信息、访问库信息的ConnectionString,这个并没有提及。
看看第二点以前是怎么做的:
- public IDbConnection GetConn()
- {
- if (conn != null)
- {
- return conn;
- }
- conn = new SqlConnection();
- conn.ConnectionString = 连接字串;
- return conn;
- }
|
上面出现了连接字串,这个字串从哪来?
总结下,要完成最终的数据访问输出,还需要解决两个问题:
1、动态进行不同数据库之间的切换。
2、解决数据连接字串的来源问题。
接着就来解决这两问题,先解决第二个问题,有个比较简单的方法,将连接字串写入配置文件中去,数据访问层只需知道它传递过来KEY值:
- <appSettings>
- <add key="ConnStr" value="server=.;uid=sa;password=123456;database=DATA_BASE;max pool size=300"/>
- </appSettings>
|