当前位置:编程学习 > C#/ASP.NET >>

关于可移植数据访问层问题 ?

各位高手,我正在研究一个通用的数据库访问,可是遇到一个急手的问题,我想写一个通用的返回datareader对象的方法,可不知道datareader类用的是什么接口(如,sqlconnection、oledbconnection、oracleconnection用的是idbconnection接口),请各位高手指点。 
代码: 
DBFactory.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.Data.SqlClient; 
using System.Data.OleDb; 
//using System.Data.OracleClient; 

namespace pro 

    ///  <summary> 
    /// 移植到的数据库名称集 
    ///  </summary> 
    public enum DataBaseType 
    {//申明一个枚举类型的,枚举参数为我们可能会移植到的数据库名称集 
        Acess, 
        SqlServer, 
        Oracle 
    } 


    ///  <summary> 
    /// DBFactory 的摘要说明 
    ///  </summary> 
    public class DBFactory 
    { 
        public DBFactory() 
        { 
            // 
            // TODO: 在此处添加构造函数逻辑 
            // 
        } 

        ///  <summary> 
        /// 创建并初始化Connection连接实例 
        ///  </summary> 
        ///  <param name="strconn">数据库连接字符串名 </param> 
        ///  <param name="dbType">数据提供程序类型 </param> 
        ///  <returns>返回一个已经创建好的数据库连接实例 </returns> 
        protected static IDbConnection CreateConnection(string strconn,DataBaseType dbType) 
        { 
            IDbConnection conn; 
            switch (dbType) 
            {  
                case DataBaseType.Acess: 
                    conn = new OleDbConnection(ConfigurationManager.ConnectionStrings[strconn].ConnectionString); 
                    break; 
                //case DataBaseType.Oracle: 
                //    conn = new OracleConnection(ConfigurationManager.ConnectionStrings[strconn].ConnectionString); 
                //    break; 
                default : 
                    conn = new SqlConnection(ConfigurationManager.ConnectionStrings[strconn].ConnectionString); 
                    break; 
            } 
            return conn; 
        } 

        ///  <summary> 
        ///  创建并初始化Command实例 
        ///  </summary> 
        ///  <param name="QueryString">Sql查询语句或存储过程名称 </param> 
        ///  <param name="conn">数据库连接实例 </param> 
        ///  <param name="dbType">数据提供程序类型 </param> 
        ///  <returns>返回一个已经创建好的Command实例对象 </returns> 
        protected static IDbCommand CreateCommand(string QueryString, IDbConnection conn,DataBaseType dbType) 
        { 
            IDbCommand cmd; 
            switch (dbType) 
            {  
                case DataBaseType.Acess: 
                    cmd = new OleDbCommand(QueryString, (OleDbConnection)conn); 
                    break; 
                //case DataBaseType.Oracle: 
                //    cmd = new OracleCommand(QueryString, (OracleConnection)conn); 
                //    break; 
                default : 
                    cmd = new SqlCommand(QueryString,(SqlConnection)conn); 
                    break; 
            } 
            return cmd; 
        } 

        ///  <summary> 
        /// 创建并初始化一个DataAdapter对象 
        ///  </summary> 
        ///  <param name="cmd">Command实例对象 </param> 
        ///  <param name="dbTpye">数据提供程序类型 </param> 
        ///  <returns>返回一个已经创建好的DataAdapter对象s </returns> 
        protected static IDbDataAdapter CreateDataAdapter(IDbCommand cmd, DataBaseType dbTpye) 
        { 
            IDbDataAdapter ida; 
            switch (dbTpye) 
            {  
                case DataBaseType.Acess: 
                    ida = new OleDbDataAdapter((OleDbCommand)cmd); 
                    break; 
                //case DataBaseType.Oracle: 
                //    ida = new OracleDataAdapter((OracleCommand)cmd); 
                //    break;  
                default : 
                    ida = new SqlDataAdapter((SqlCommand)cmd); 
                    break; 
            } 
            return ida; 
        } 
    } 

--------------------编程问答-------------------- 关于可移植数据访问层问题(二)url:http://topic.csdn.net/u/20080512/21/ee13d662-eaef-4cb0-847c-4ba2f85af3f5.html --------------------编程问答--------------------

楼上有问题,正确的url:http://topic.csdn.net/u/20080512/21/7c28db7d-21a8-4e13-b452-e2b014c易做图2.html
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,