在实际的企业级应用时,可能会用到两种或两种以上数据库,这就需要在编码时做两种数据库的转换,现在提供一种方法,也是微软示例PetShop提供的解决方式;即使用Assembly反射加载访问数据库的类,中国自学编程网整理发布。
首先,创建一个空白解决方案,名字为:TestChangeDataBase,然后添加一个C#类库工程,名字叫DBHelper,然后在类库工程里创建一个接口IDAL,具体代码如下: namespace DBHelper { public interface IDAL { DataSet GetDataSet(string query); } }
保存后,关闭这个接口文件;再创建一个类文件OracleHelper.CS,用以访问Oracle数据库:此类要实现IDAL接口 示例代码如下:
using System; using System.Data; using System.Configuration; using System.Web;
using System.Data.OracleClient;
/// <summary> /// 访问Oracle数据库 /// </summary> /// namespace DBHelper { public class OracleHelper : IDAL { public OracleHelper() { // // TODO: 在此处添加构造函数逻辑 // }
#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 } }
保存,关闭此此文件,再创建一个类文件SQLHelper.CS,用以访问SQL-Server数据库,此类也要实现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: 在此处添加构造函数逻辑 // }
#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 } } 保存,关闭此文件.在解决方案视图,右击DBHelper,选择生成,生成工程.
向解决方案中添加一个Web工程,名字叫TestWebSite,
给此Web工程添加引用--项目--选择DBHelper工程.
并给此Web工程添加Web.Config配置文件,并添加如下节点:
<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开发要配置此节,如用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为基础开发的
配置完毕后,保存,关闭文件,打开默认的页Default.aspx,要设计视图,向此页添加一个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) { //在此处可以采用读取配置文件的方式,则可以实现动态加载,这里仅做个示例
/* * 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!
这个仅是个示例工程,可以做的再好一点,加大配置文件的作用,以适应真正开发的需要
|