轉帖|其它|編輯:郝浩|2008-09-17 09:41:15.000|閱讀 1054 次
概述:動態加載數據庫連接和操作類
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
因為程序可能以后會連接不同的數據庫,比如目前是sqlserver,以后隨著系統的改善和升級,也許會連接到oracle數據庫,這樣通常我們就需要重新改寫原有代碼。可是大家都知道重新改代碼會帶來很多不必要的問題,這是最容易產生的,所以最好是不修改以前的任何東西,而是添加新的代碼,這樣即使出了問題也容易判斷。所以我的這個例子就是這個功能,只要新的數據庫連接和操作類符合已有的接口interface,這樣就只要復制到當前項目下,然后修改配置文件,最后重新編譯整個工程,即可,當然后面的操作是由批處理來完成的。
這是配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- Sql Server讀取這里的字符串來初始化具體的數據庫連接類-->
<add key ="AssemblyName" value ="DbSqlServer"/>
<add key ="Constractor" value ="DbSqlServer.DaoSqlServer"/>
<!-- Oracle-->
<!--如果換成了其他數據庫,只要修改這個配置文件就可以了
<add key ="AssemblyName" value ="DataOracle"/>
<add key ="Constractor" value ="DataOracle.DAOOracle"/>-->
<!--其他代碼省略-->
</configuration>
下面的是具體實例化數據庫類的代碼
public static IDbAccess Instance()
{
// 讀取的是配置文件的key,通過反射機制生成具體的數據庫類
string strAssemblyName = ConfigurationManager.AppSettings["AssemblyName"];
string className = ConfigurationManager.AppSettings["Constractor"];
//Type type = null;
object obj = null;
try
{
obj = Assembly.Load(strAssemblyName).CreateInstance(className, false);
//type = Type.GetType(className);
}
catch (TypeLoadException e)
{
throw e;
}
if (obj == null)
{
throw new Exception("類型加載失敗!");
}
//obj = Activator.CreateInstance(type);
if (obj is IDbAccess)
{
return (IDbAccess)obj;// IDbAccess是具體數據庫操作類的接口
}
else
{
throw new Exception("此類沒有實現****接口!");
}
}
都完事之后,編寫如下的批處理文件,然后執行,其實就是重新編譯整個工程(可以把下面的復制,然后執行就可以了,當然要放到項目的目錄下)
@Set Path=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;%PATH%
msbuild TalentApp.sln
Copy .\DbSqlServer\bin\Debug\DbSqlServer.dll .\WinForm\bin\Debug
pause
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:DIY部落