设为首页 收藏本站
查看: 876|回复: 0

[经验分享] 利用配置文件实现SQL-Server与Oralce数据库访问类的转换

[复制链接]

尚未签到

发表于 2016-11-7 09:25:53 | 显示全部楼层 |阅读模式
  在企业级应用时,可能会用到两种或两种以上数据库,这就需要在编码时做两种数据库的转换,现在提供一种方法,也是微软示例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!
  这个仅是个示例工程,可以做的再好一点,加大配置文件的作用,以适应真正开发的需要

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-296856-1-1.html 上篇帖子: SQL Server 分布式数据库的问题和解决方法1 下篇帖子: 《Microsoft Sql server 2008 Internals》读书笔记--第七章Special Storage(5)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表