在實際的企業(yè)級應(yīng)用時,可能會用到兩種或兩種以上數(shù)據(jù)庫,這就需要在編碼時做兩種數(shù)據(jù)庫的轉(zhuǎn)換,現(xiàn)在提供一種方法,也是微軟示例PetShop提供的解決方式;即使用Assembly反射加載訪問數(shù)據(jù)庫的類,中國自學(xué)編程網(wǎng)整理發(fā)布。
首先,創(chuàng)建一個空白解決方案,名字為:TestChangeDataBase,然后添加一個C#類庫工程,名字叫DBHelper,然后在類庫工程里創(chuàng)建一個接口IDAL,具體代碼如下: namespace DBHelper { public interface IDAL { DataSet GetDataSet(string query); } }
保存后,關(guān)閉這個接口文件;再創(chuàng)建一個類文件OracleHelper.CS,用以訪問Oracle數(shù)據(jù)庫:此類要實現(xiàn)IDAL接口 示例代碼如下:
using System; using System.Data; using System.Configuration; using System.Web;
using System.Data.OracleClient;
/// <summary> /// 訪問Oracle數(shù)據(jù)庫 /// </summary> /// namespace DBHelper { public class OracleHelper : IDAL { public OracleHelper() { // // TODO: 在此處添加構(gòu)造函數(shù)邏輯 // }
#region IDAL 成員
public DataSet GetDataSet(string query) { OracleConnection con = new OracleConnection(ConfigurationSettings.AppSettings["oracle"]); OracleDataAdapter da = new OracleDataAdapter(query, con); DataSet ds = new DataSet(); da.Fill(ds); return ds; }
#endregion } }
保存,關(guān)閉此此文件,再創(chuàng)建一個類文件SQLHelper.CS,用以訪問SQL-Server數(shù)據(jù)庫,此類也要實現(xiàn)IDAL接口,示例代碼如下:
using System; using System.Data; using System.Configuration; using System.Web;
using System.Data.SqlClient; /// <summary> /// SQLHelper 的摘要說明 /// </summary>
/// namespace DBHelper { public class SQLHelper : IDAL { public SQLHelper() { // // TODO: 在此處添加構(gòu)造函數(shù)邏輯 // }
#region IDAL 成員
public DataSet GetDataSet(string query) { SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["sqlserver"]); SqlDataAdapter da = new SqlDataAdapter(query, con); DataSet ds = new DataSet(); da.Fill(ds); return ds; }
#endregion } } 保存,關(guān)閉此文件.在解決方案視圖,右擊DBHelper,選擇生成,生成工程.
向解決方案中添加一個Web工程,名字叫TestWebSite,
給此Web工程添加引用--項目--選擇DBHelper工程.
并給此Web工程添加Web.Config配置文件,并添加如下節(jié)點:
<connectionStrings> <add name="oracle" connectionString="server=student;user id=scott;password=tiger"/> <add name="sqlserver" connectionString="server=thinkpad\sqlexpress;uid=sa;pwd=yang;database=pubs;"/> </connectionStrings> 注:這是用VS2005開發(fā)要配置此節(jié),如用VS2003,則配置如下:
<appSettings> <add key="oracle" value="server=student;user id=scott;password=tiger"/> <add key="sqlserver" value="server=thinkpad\sqlexpress;uid=sa;pwd=yang;database=pubs;"/> </appSettings>
本文是以VS2005為基礎(chǔ)開發(fā)的
配置完畢后,保存,關(guān)閉文件,打開默認(rèn)的頁Default.aspx,要設(shè)計視圖,向此頁添加一個GridView控件,再打開代碼隱藏文件:Default.aspx.cs,編輯代碼
完整代碼如下:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; using System.Reflection; using DBHelper;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //在此處可以采用讀取配置文件的方式,則可以實現(xiàn)動態(tài)加載,這里僅做個示例
/* * IDAL dbHelper = (IDAL)Assembly.Load("DBHelper").CreateInstance(ConfigurationSettings.AppSettings["sqlHelper"]);
*/ IDAL dbHelper = (IDAL)Assembly.Load("DBHelper").CreateInstance("DBHelper.OracleHelper");
//SQL 語句也可以在配置文件中配置 DataSet ds = dbHelper.GetDataSet("select * from emp"); this.GridView1.DataSource = ds; this.GridView1.DataBind(); } }
全部完成后,選擇Web工程為啟動項目,啟動測試,OK!
這個僅是個示例工程,可以做的再好一點,加大配置文件的作用,以適應(yīng)真正開發(fā)的需要
|