是这样的:之前我们公司有.NET(C#)一个项目,该项目是三层结构(UI层\业务逻辑层\数据访问层),访问数据库是基于SQL SERVER2000,那么大家都知道,在C#中访问数据库的提成程序是:SqlClient提供的SqlConnection\SqlDataReader\SqlCommand\SqlDataAdapter等对象,但是我们打算做成一套通过修改Web.config的数据库连接串后就根据连接什么类型的数据库,就能进行访问.比如访问MS Access,使用提供程序是OleDb下的访问对象.但是如何修改不同连接数据库字符串后相应的命名空间相应改变.谢谢
解决方案 »
- c# 一个datagridview 获取另一个datagridview中的一列的id值
- 如何返回类方法的变量?
- 2010RC,一调用ShowDialog,程序就自动退出?这是怎么回事呢?
- 没人会Acrobat Javascript吗 希望高手和专家进来解答!!!
- 相对路径问题
- 如何在showDialog的窗体内刷新父窗体的内容
- 求助:如何用c#实现异地数据库自动数据更新
- urldecode 问题
- 哪有免费发短信的软件下载?至少有三个月时间是免费的哦
- C#和visual c#.net是不是一回事
- 字符串转变成整数这样怎么不对
- 请教各位大哥:怎样把读入DataSet中的XML文件压缩后存入数据库的IMAGES字段然后再读出到DataSet中
比如下面的代码,是一个类的一个方案1(访问SqlServer2000)修改成方案2(访问MS ACCESS)
#region 查看 分所 SqlDataReader
/// <summary>
/// 查看 分所
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public SqlDataReader GetCompany(int ID)
{
string sql = " select * from Organ_Company where ID="+ID;
return SqlHelper.ExecuteReader(DBConnString,CommandType.Text,sql);
}#endregion方案2:
#region 查看 分所 OleDbDataReader
/// <summary>
/// 查看 分所
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public OleDbDataReader GetCompany(int ID)
{
string sql = " select * from Organ_Company where ID="+ID;
return OleDbHelper.ExecuteReader(DBConnString,CommandType.Text,sql);
}#endregion
这样修改后,UI层当调用GetCompany( id )方法后返回的是DataReader,问题就是在于如何决定是SqlDataReader,还是OleDbDataReader呢?(SqlHelper\OleDbHelper都已经做好)这个时候我应该如何重构?因为这个项目之前没有考虑到扩展切换数据库,所以没有什么接口.现在又不想面目全非地改变软件内部结构,现在如何才能做到如上的需求,而又不至于面目全非地修改软件内部结构呢?恳请好心人给予帮助,小弟不胜感激你~~~~~!!!
返回的sqlconnection等对象使用统一的接口,比如dotnet提供的IConnection, ICommand等,其他的类自己写公共接口就可以了
Petshop,里面是用工厂模式以及反射实现的