美文网首页
2018-04-04 C# 数据访问类

2018-04-04 C# 数据访问类

作者: 863536 | 来源:发表于2018-04-04 10:20 被阅读0次

    1.直接黏贴代码

    public sealed class DaoHelper {
            private static DataTable _providers = null;
            private DbProviderFactory _pf = null;
    
            /// <summary>
            /// 静态构造函数,初始化数据提供程序列表。
            /// </summary>
            static DaoHelper() {
                _providers = DbProviderFactories.GetFactoryClasses();
            }
            /// <summary>
            /// 初始化 DAOHelper 类的新实例。
            /// </summary>
            public DaoHelper() {
            }
            /// <summary>
            /// 用指定的数据提供程序名称,初始化 DAOHelper 类的新实例。
            /// </summary>
            /// <param name="providerName">数据提供程序名称。</param>
            public DaoHelper(string providerName) {
                this.ProviderName = providerName;
            }
    
            private string m_providerName = "";
    
            /// <summary>
            /// 获取或设置数据提供程序名称。
            /// </summary>
            public string ProviderName {
                get { return m_providerName; }
                set {
                    if(string.IsNullOrEmpty(value)){
                        throw new ArgumentNullException("value");
                    }
    
                    if(m_providerName != value) {
                        ChangeProvider(value);
                    }
                }
            }
    
            /// <summary>
            /// 查找指定数名称的据提供程序行。
            /// </summary>
            /// <param name="providerInvariantName">数据提供程序名称。</param>
            /// <returns></returns>
            private DataRow FindProviderRow(string providerInvariantName) {
                if(_providers != null) {
                    return _providers.Rows.Find(providerInvariantName);
                }
                throw new ProvidersNotFoundException();
            }
    
            /// <summary>
            /// 根据参数提供的数据提供程序名称,更改当前的数据提供程序工厂。
            /// </summary>
            /// <param name="providerName">数据提供程序名称。</param>
            private void ChangeProvider(string providerName) {
                if(string.IsNullOrEmpty(providerName)) {
                    throw new ArgumentNullException("value");
                }
    
                DataRow providerRow = FindProviderRow(providerName);
                if(providerRow == null){
                    throw new ProviderNotFoundException(providerName);              
                }
                _pf = DbProviderFactories.GetFactory(providerRow);
                m_providerName = providerName;
                
            }
    
            /// <summary>
            /// 创建数据源枚举器。
            /// </summary>
            /// <returns>返回创建成功的数据源枚举器。</returns>
            public DbDataSourceEnumerator CreateDataSourceEnumerator() {
                if(_pf == null) {
                    throw new ProviderFactoryNullException();
                }
                return _pf.CreateDataSourceEnumerator();
            }
    
            /// <summary>
            /// 创建数据库连接。
            /// </summary>
            /// <returns>返回成功创建的连接对象。</returns>
            public DbConnection CreateConnection() {
                if(_pf == null) {
                    throw new ProviderFactoryNullException();
                }
                return _pf.CreateConnection();
            }
    
            /// <summary>
            /// 创建数据库连接,并用指定的数据库连接字符串打开。
            /// </summary>
            /// <param name="connectionString">数据库连接字符串。</param>
            /// <returns>返回成功创建并打开的连接对象。</returns>
            public DbConnection CreateConnection(string connectionString){
                DbConnection result = CreateConnection();
                result.ConnectionString = connectionString;
                result.Open();
                return result;
            }
    
            /// <summary>
            /// 创建数据库连接字符串生成器。
            /// </summary>
            /// <returns>返回成功创建的连接对象。</returns>
            public DbConnectionStringBuilder CreateConnectionStringBuilder() {
                if(_pf == null) {
                    throw new ProviderFactoryNullException();
                }
                return _pf.CreateConnectionStringBuilder();
            }
    
            /// <summary>
            /// 创建数据适配器。
            /// </summary>
            /// <returns></returns>
            public DataAdapter CreateAdapter() {
                if(_pf == null) {
                    throw new ProviderFactoryNullException();
                }
                return _pf.CreateDataAdapter();
            }
        }
    
    

    相关文章

      网友评论

          本文标题:2018-04-04 C# 数据访问类

          本文链接:https://www.haomeiwen.com/subject/oxfkhftx.html