日期:2014-05-19  浏览次数:20361 次

数据库可能是access,sql 2005有什么办法能让程序支持!
主要目的是根据不同的需求用不同的数据库,
当然是在不动程序的情况下,动一下差数之类是最好的啦.

前提是不想写两套程序比如,一个支持access,一个支持sql   2005

我现在有个思路是写通用接口!还有没有什么办法?????

------解决方案--------------------
使用虚拟工厂模式 加 反射 等
楼主可以看看PET SHOP
------解决方案--------------------
使用工厂模式吧,在webconfig里配置,根据需要来使用access还是sql server或者别的数据库的引擎
------解决方案--------------------
Abstract Factory
通过不同的Driver来支持就OK
把不同的地方隔离掉
------解决方案--------------------
工厂模式
------解决方案--------------------
工厂模式
详情请见PetShop
------解决方案--------------------
你还是用ORM吧这个最简单了如NH=
------解决方案--------------------
Global.asax.cs
protected void Application_Start(Object sender, EventArgs e)
{
string connString = ConfigurationSettings.AppSettings[ "connString "];
string type = ConfigurationSettings.AppSettings[ "type "]; DataConfig.DefaultConnString = connString;
switch(type)
{
case "SQL ":
DataConfig.DefaultProvider = DataProvider.Sql;
break;
case "OLEDB ":
DataConfig.DefaultProvider = DataProvider.OleDb;
break;
case "ODBC ":
DataConfig.DefaultProvider = DataProvider.Odbc;
break;
case "ORACLE ":
DataConfig.DefaultProvider = DataProvider.Oracle;
break;
}
}

Web.config
<appSettings>
<add key= "connString " value= "SERVER=.;DATABASE=DONETProject;UID=sa;PWD= "/>
<add key= "type " value= "SQL "/>
</appSettings>

DataFactory.cs
public static ICommonAccess GetInstance(DataProvider pProvider,string pConnString)
{
ICommonAccess Action=null;
switch((int)pProvider)
{
case 1:
Action=new SqlProvider(pConnString);
break;
case 2:
Action=new OleDbProvider(pConnString);
break;
case 3:
Action=new OdbcProvider(pConnString);
break;
case 4:
Action=new OracleProvider(pConnString);
break;
}
return Action;
}

再为每个数据库类型写个类,太多了,不贴了