原文:http://www.cnblogs.com/wangzhq/archive/2006/09/14/504309.html#1744469
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using System.Configuration; using System.Collections; namespace Ths { /**//// <summary> ======================================================== /// /// wangzhq.cnblogs.com /// 数据工厂类,实现了跨数据库的操作. /// ======================================================== /// </summary> public class DataAccess:PageBase { /**//// <summary> /// Webconfig配置连接字符串 /// </summary> private string _confirString = "ConnectionString"; /**//// <summary> /// 数据工厂类 /// </summary> public DataAccess() { } /**//// <summary> /// 数据工厂类 /// </summary> /// <param name="configString">web.config 关键字</param> public DataAccess(string configString) { ConfigString = configString; } /**//// <summary> /// 属性,设置数据库连接字符串 /// </summary> public string ConfigString { get { return _confirString; } set { _confirString = value; } } //==============================================GetProviderName============================== 获得数据库的类型 public string GetProviderName(string ConfigString)#region 获得数据库的类型 public string GetProviderName(string ConfigString) /**//// <summary> /// 返回数据提供者 /// </summary> /// <returns>返回数据提供者</returns> public string GetProviderName(string ConfigString) { ConnectionStringSettingsCollection ConfigStringCollention = ConfigurationManager.ConnectionStrings; if (ConfigStringCollention == null || ConfigStringCollention.Count <= 0) { throw new Exception("web.config 中无连接字符串!"); } ConnectionStringSettings StringSettings = null; if (ConfigString == string.Empty) { StringSettings = ConfigurationManager.ConnectionStrings["ConnectionString"]; } else { StringSettings = ConfigurationManager.ConnectionStrings[ConfigString]; } return StringSettings.ProviderName; } /**//// <summary> /// 返回数据提供者 /// </summary> /// <returns></returns> public string GetProviderName() { return GetProviderName(ConfigString); } #endregion //=====================================================获得连接字符串==================================== /**//// <summary> /// 获得连接字符串 /// </summary> /// <returns></returns> public string GetConnectionString(string ConfigString) { ConnectionStringSettingsCollection ConfigStringCollention = ConfigurationManager.ConnectionStrings; if (ConfigStringCollention == null || ConfigStringCollention.Count <= 0) { throw new Exception("web.config 中无连接字符串!"); } ConnectionStringSettings StringSettings = null; if (ConfigString == string.Empty) { StringSettings = ConfigurationManager.ConnectionStrings["ConnectionString"]; } else { StringSettings = ConfigurationManager.ConnectionStrings[ConfigString]; } return StringSettings.ConnectionString; } public string GetConnectionString() { return GetConnectionString(ConfigString); } //==============================================GetDbproviderFactory========================= 返回数据工厂 public DbProviderFactory GetDbProviderFactory()#region 返回数据工厂 public DbProviderFactory GetDbProviderFactory() /**//// <summary> /// 返回数据工厂 /// </summary> /// <returns></returns> public DbProviderFactory GetDbProviderFactory() { DbProviderFactory f = null; string ProviderName = GetProviderName(); switch (ProviderName) { case "System.Data.SqlClient": f = GetDbProviderFactory("System.Data.SqlClient"); break; case "System.Data.OracleClient": f = GetDbProviderFactory("System.Data.OracleClient"); break; case "System.Data.OleDb": f = GetDbProviderFactory("System.Data.OleDb"); break; default: f = GetDbProviderFactory("System.Data.SqlClient"); break; } return f; } /**//// <summary> /// 返回数据工厂 /// </summary> /// <param name="providername"></param> /// <returns></returns> public DbProviderFactory GetDbProviderFactory(string providername) { return DbProviderFactories.GetFactory(providername); } #endregion //==============================================CreateConnection============================= 创建数据库连接 public DbConnection CreateConnection()#region 创建数据库连接 public DbConnection CreateConnection() /**//// <summary> /// 创建数据库连接 /// </summary> /// <returns></returns> public DbConnection CreateConnection() { DbConnection con = GetDbProviderFactory().CreateConnection(); con.ConnectionString = GetConnectionString(); return con; } /**//// <summary> /// 创建数据库连接 /// </summary> /// <param name="provdername"></param> /// <returns></returns> public DbConnection CreateConnection(string provdername) { DbConnection con = GetDbProviderFactory(provdername).CreateConnection(); con.ConnectionString = GetConnectionString(); return con; } #endregion //==============================================CreateCommand================================ 创建执行命令对象 public override DbCommand CreateCommand(string sql, CommandType cmdType, DbParameter[] parameters)#region 创建执行命令对象 public override DbCommand CreateCommand(string sql, CommandType cmdType, DbParameter[] parameters) /**//// <summary> /// 创建执行命令对象 /// </summary> /// <param name="sql"></param> /// <param name="cmdType"></param> /// <param name="parameters"></param> /// <returns></returns> public DbCommand CreateCommand(string sql, CommandType cmdType, DbParameter[] parameters) { DbCommand _command = GetDbProviderFactory().CreateCommand(); _command.Connection = CreateConnection(); _command.CommandText = sql; _command.CommandType = cmdType; if (parameters != null && parameters.Length > 0) { foreach (DbParameter param in parameters) { _command.Parameters.Add(param); } } return _command; } /**//// <summary> /// 创建执行命令对象 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>执行命令对象实例</returns> public DbCommand CreateCommand(string sql) { DbParameter[] parameters = new DbParameter[0]; return CreateCommand(sql, CommandType.Text, parameters); } /**//// <summary> /// 创建执行命令对象 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>执行命令对象实例</returns> public DbCommand CreateCommand(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; return CreateCommand(sql, cmdtype, parameters); } /**//// <summary> /// 创建执行命令对象 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数</param> /// <returns>执行命令对象实例</returns> public DbCommand CreateCommand(string sql, DbParameter[] parameters) { return CreateCommand(sql, CommandType.Text, parameters); } #endregion //=========================================CreateAdapter()============================================== 创建数据适配器 CreateAdapter(string sql)#region 创建数据适配器 CreateAdapter(string sql) /**//// <summary> /// 创建数据适配器 /// </summary> /// <param name="sql">SQL,语句</param> /// <returns>数据适配器实例</returns> public DbDataAdapter CreateAdapter(string sql) { DbParameter[] parameters = new DbParameter[0]; return CreateAdapter(sql, CommandType.Text, parameters); } /**//// <summary> /// 创建数据适配器 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <returns>数据适配器实例</returns> public DbDataAdapter CreateAdapter(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; return CreateAdapter(sql, cmdtype, parameters); } /**//// <summary> /// 创建数据适配器 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>数据适配器实例</returns> public DbDataAdapter CreateAdapter(string sql, CommandType cmdtype, DbParameter[] parameters) { DbConnection _connection = CreateConnection(); DbCommand _command = GetDbProviderFactory().CreateCommand(); _command.Connection = _connection; _command.CommandText = sql; _command.CommandType = cmdtype; if (parameters != null && parameters.Length > 0) { foreach (DbParameter _param in parameters) { _command.Parameters.Add(_param); } } DbDataAdapter da = GetDbProviderFactory().CreateDataAdapter(); da.SelectCommand = _command; return da; } #endregion //=========================================CreateParameter=================================== 生成参数 public override SqlParameter CreateParameter(string field, string dbtype, string value)#region 生成参数 public override SqlParameter CreateParameter(string field, string dbtype, string value) /**//// <summary> /// 创建参数 /// </summary> /// <param name="field">参数字段</param> /// <param name="dbtype">参数类型</param> /// <param name="value">参数值</param> /// <returns></returns> public DbParameter CreateParameter(string field, string dbtype, string value) { DbParameter p = GetDbProviderFactory().CreateParameter(); p.ParameterName = field; p.Value = value; return p; } #endregion //======================================================ExecuteCommand()============================================ 执行非查询语句,并返回受影响的记录行数 ExecuteCommand(string sql)#region 执行非查询语句,并返回受影响的记录行数 ExecuteCommand(string sql) /**//// <summary> /// 执行非查询语句,并返回受影响的记录行数 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>受影响记录行数</returns> public int ExecuteCommand(string sql) { DbParameter[] parameters = new DbParameter[0]; return ExecuteCommand(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行非查询语句,并返回受影响的记录行数 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <returns>受影响记录行数</returns> public int ExecuteCommand(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; return ExecuteCommand(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行非查询语句,并返回受影响的记录行数 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数</param> /// <returns>受影响记录行数</returns> public int ExecuteCommand(string sql, DbParameter[] parameters) { return ExecuteCommand(sql, CommandType.Text, parameters); } /**//// <summary> ///批量执行SQL语句 /// </summary> /// <param name="SqlList">SQL列表</param> /// <returns></returns> public bool ExecuteCommand(ArrayList SqlList) { DbConnection con = CreateConnection(); con.Open(); bool iserror = false; string strerror = ""; DbTransaction SqlTran =con.BeginTransaction(); try { for (int i = 0; i < SqlList.Count; i++) { DbCommand _command = GetDbProviderFactory().CreateCommand(); _command.Connection = con; _command.CommandText = SqlList[i].ToString(); _command.Transaction = SqlTran; _command.ExecuteNonQuery(); } } catch (Exception ex) { iserror = true; strerror = ex.Message; } finally { if (iserror) { SqlTran.Rollback(); throw new Exception(strerror); } else { SqlTran.Commit(); } con.Close(); } if (iserror) { return false; } else { return true; } } /**//// <summary> /// 执行非查询语句,并返回受影响的记录行数 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>受影响记录行数</returns> public int ExecuteCommand(string sql, CommandType cmdtype, DbParameter[] parameters) { int _result = 0; DbCommand _command = CreateCommand(sql, cmdtype, parameters); try { _command.Connection.Open(); _result = _command.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { _command.Connection.Close(); } return _result; } #endregion //=====================================================ExecuteScalar()============================================= 执行非查询语句,并返回首行首列的值 ExecuteScalar(string sql)#region 执行非查询语句,并返回首行首列的值 ExecuteScalar(string sql) /**//// <summary> /// 执行非查询语句,并返回首行首列的值 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>Object</returns> public object ExecuteScalar(string sql) { DbParameter[] parameters = new DbParameter[0]; return ExecuteScalar(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行非查询语句,并返回首行首列的值 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <returns>Object</returns> public object ExecuteScalar(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; return ExecuteScalar(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行非查询语句,并返回首行首列的值 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数</param> /// <returns>Object</returns> public object ExecuteScalar(string sql, DbParameter[] parameters) { return ExecuteScalar(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行非查询语句,并返回首行首列的值 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>Object</returns> public object ExecuteScalar(string sql, CommandType cmdtype, DbParameter[] parameters) { object _result=null; DbCommand _command = CreateCommand(sql, cmdtype, parameters); try { _command.Connection.Open(); _result = _command.ExecuteScalar(); } catch { throw; } finally { _command.Connection.Close(); } return _result; } #endregion //=====================================================ExecuteReader()============================================= 执行查询,并以DataReader返回结果集 ExecuteReader(string sql)#region 执行查询,并以DataReader返回结果集 ExecuteReader(string sql) /**//// <summary> /// 执行查询,并以DataReader返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>IDataReader</returns> public DbDataReader ExecuteReader(string sql) { DbParameter[] parameters = new DbParameter[0]; return ExecuteReader(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行查询,并以DataReader返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <returns>IDataReader</returns> public DbDataReader ExecuteReader(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; return ExecuteReader(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行查询,并以DataReader返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数</param> /// <returns>IDataReader</returns> public DbDataReader ExecuteReader(string sql, DbParameter[] parameters) { return ExecuteReader(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行查询,并以DataReader返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>IDataReader</returns> public DbDataReader ExecuteReader(string sql, CommandType cmdtype, DbParameter[] parameters) { DbDataReader _result; DbCommand _command = CreateCommand(sql, cmdtype, parameters); try { _command.Connection.Open(); _result = _command.ExecuteReader(CommandBehavior.CloseConnection); } catch { throw; } finally { } return _result; } #endregion //=====================================================GetDataSet()================================================ 执行查询,并以DataSet返回结果集 GetDataSet(string sql)#region 执行查询,并以DataSet返回结果集 GetDataSet(string sql) /**//// <summary> /// 执行查询,并以DataSet返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>DataSet</returns> public DataSet GetDataSet(string sql) { DbParameter[] parameters = new DbParameter[0]; return GetDataSet(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行查询,并以DataSet返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <returns>DataSet</returns> public virtual DataSet GetDataSet(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; return GetDataSet(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行查询,并以DataSet返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数</param> /// <returns>DataSet</returns> public virtual DataSet GetDataSet(string sql, DbParameter[] parameters) { return GetDataSet(sql, CommandType.Text, parameters); } /**//// <summary> /// 执行查询,并以DataSet返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataSet</returns> public virtual DataSet GetDataSet(string sql, CommandType cmdtype, DbParameter[] parameters) { DataSet _result = new DataSet(); IDataAdapter _dataAdapter = CreateAdapter(sql, cmdtype, parameters); try { _dataAdapter.Fill(_result); } catch { throw; } finally { } return _result; } /**//// <summary> /// 执行查询,并以DataSet返回指定记录的结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="StartIndex">开始索引</param> /// <param name="RecordCount">显示记录</param> /// <returns>DataSet</returns> public virtual DataSet GetDataSet(string sql, int StartIndex, int RecordCount) { return GetDataSet(sql, StartIndex, RecordCount); } #endregion //=====================================================GetDataView()=============================================== 执行查询,并以DataView返回结果集 GetDataView(string sql)#region 执行查询,并以DataView返回结果集 GetDataView(string sql) /**//// <summary> /// 执行查询,并以DataView返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataView</returns> public DataView GetDataView(string sql) { DbParameter[] parameters = new DbParameter[0]; DataView dv = GetDataSet(sql, CommandType.Text, parameters).Tables[0].DefaultView; return dv; } /**//// <summary> /// 执行查询,并以DataView返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataView</returns> public DataView GetDataView(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; DataView dv = GetDataSet(sql, cmdtype, parameters).Tables[0].DefaultView; return dv; } /**//// <summary> /// 执行查询,并以DataView返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataView</returns> public DataView GetDataView(string sql, DbParameter[] parameters) { DataView dv = GetDataSet(sql, CommandType.Text, parameters).Tables[0].DefaultView; return dv; } /**//// <summary> /// 执行查询,并以DataView返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataView</returns> public DataView GetDataView(string sql, CommandType cmdtype, DbParameter[] parameters) { DataView dv = GetDataSet(sql, cmdtype, parameters).Tables[0].DefaultView; return dv; } /**//// <summary> /// 执行查询,并以DataView返回指定记录的结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="StartIndex">开始索引</param> /// <param name="RecordCount">显示记录</param> /// <returns>DataView</returns> public DataView GetDataView(string sql, int StartIndex, int RecordCount) { return GetDataSet(sql, StartIndex, RecordCount).Tables[0].DefaultView; } #endregion //=====================================================GetDataTable()============================================== 执行查询,并以DataTable返回结果集 GetDataTable(string sql)#region 执行查询,并以DataTable返回结果集 GetDataTable(string sql) /**//// <summary> /// 执行查询,并以DataTable返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataTable</returns> public DataTable GetDataTable(string sql) { DbParameter[] parameters = new DbParameter[0]; DataTable dt = GetDataSet(sql, CommandType.Text, parameters).Tables[0]; return dt; } /**//// <summary> /// 执行查询,并以DataTable返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataTable</returns> public DataTable GetDataTable(string sql, CommandType cmdtype) { DbParameter[] parameters = new DbParameter[0]; DataTable dt = GetDataSet(sql, cmdtype, parameters).Tables[0]; return dt; } /**//// <summary> /// 执行查询,并以DataTable返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataTable</returns> public DataTable GetDataTable(string sql, DbParameter[] parameters) { DataTable dt = GetDataSet(sql, CommandType.Text, parameters).Tables[0]; return dt; } /**//// <summary> /// 执行查询,并以DataTable返回结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="cmdtype">命令类型</param> /// <param name="parameters">参数</param> /// <returns>DataTable</returns> public DataTable GetDataTable(string sql, CommandType cmdtype, DbParameter[] parameters) { DataTable dt = GetDataSet(sql, cmdtype, parameters).Tables[0]; return dt; } /**//// <summary> /// 执行查询,并以DataTable返回指定记录的结果集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="StartIndex">开始索引</param> /// <param name="RecordCount">显示记录</param> /// <returns>DataTable</returns> public DataTable GetDataTable(string sql, int StartIndex, int RecordCount) { return GetDataSet(sql, StartIndex, RecordCount).Tables[0]; } /**//// <summary> /// 执行查询,返回以空行填充的指定条数记录集 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="SizeCount">显示记录条数</param> /// <returns>DataTable</returns> public DataTable GetDataTable(string sql, int SizeCount) { DataTable dt = GetDataSet(sql).Tables[0]; int b = SizeCount - dt.Rows.Count; if (dt.Rows.Count < SizeCount) { for (int i = 0; i < b; i++) { DataRow dr = dt.NewRow(); dt.Rows.Add(dr); } } return dt; } #endregion } }
您还没有登录,请您登录后再发表评论
1. 数据库连接池:为了提高性能和资源利用率,数据工厂通常会使用数据库连接池,它预先创建并管理一定数量的数据库连接,供多个线程复用,避免频繁的创建和销毁连接。 2. ORM(对象关系映射):ORM框架如Hibernate...
本知识点中介绍的正是这样一个用于***应用程序中,利用.NET框架提供的DbProviderFactories功能,编写的一个数据库操作类。 首先,要理解标题中提到的“DbProviderFactories”,这是.NET框架中用于创建数据提供程序...
为了实现跨平台、跨数据库类型的通用性,开发者通常需要创建一套能够适应多种数据库系统的通用数据库访问类。ADO.NET作为.NET Framework中的一个关键组成部分,为这一需求提供了强大的支持。通过本文,我们将深入...
数据库住户管理系统是一个基于VC++开发的应用程序,它深入利用了OLE DB技术来实现对小区住户信息的高效管理和操作。在本文中,我们将详细介绍这个系统的关键组成部分、开发过程以及OLE DB在数据库操作中的应用。 ...
可能包括创建 Database 对象,执行 SQL 查询、存储过程,以及如何利用 CommandBuilder 自动化数据操作。 6. **最佳实践**: - 使用 DAAB 可以遵循面向接口编程,将数据库逻辑与业务逻辑解耦,提高代码的可测试性。...
6. **DbProviderFactory类**:这个类是`System.Data.Common`命名空间的一部分,它允许根据数据提供者名称动态创建数据库连接。在代码中,`DbProviderFactories.GetFactory(DataProv)`用于根据`DataProv`变量获取对应...
- **数据访问层(DAL层)**:负责与数据库的交互,包括数据的增删改查,封装了对数据库的操作,通常使用ADO.NET或ORM(如Entity Framework)实现。 2. **WCF服务**: - **WCF是.NET框架的一部分,用于构建分布式...
Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象;跟踪对象所做的更改;并发处理;将对象更改传播到数据源等。 使用Entity Framework操作Access数据库...
4. **NpgsqlTransaction**: 实现了数据库事务,确保数据操作的一致性和完整性。 5. **NpgsqlDataAdapter**: 用于填充DataSet或DataTable,提供了一种离线操作数据库数据的方式。 6. **...
通常,它会使用ADO.NET提供的DbProviderFactory来创建数据库连接,并且利用Entity Framework的DbContext概念,为每个数据库操作提供上下文。在源码中,你可能会看到关于连接字符串、数据库类型识别以及连接池管理的...
在多数据库连接的情况下,通常会使用DBProviderFactory类,它可以动态创建与特定数据库兼容的数据提供者实例,从而实现数据库的透明切换。 三层架构是软件设计中的一种经典模式,其主要组成部分包括: 1. 数据访问...
在开发阶段,如果不清楚最终部署环境的具体数据库类型,可以利用`DbProviderFactory`来实现数据库无关性。`DbProviderFactory`是一种抽象类和接口机制,它可以用于动态获取不同类型的数据提供者,从而简化代码并提高...
3. **提供程序工厂**:.NET Framework提供了数据提供程序模型,其中的`DbProviderFactory`类是核心,它允许我们不依赖特定的数据库提供商(如SQL Server、Oracle等),而是通过统一的接口创建数据库连接。...
此类通过使用.NET Framework中的`System.Data`命名空间提供的接口和类来实现跨数据库的操作能力。 #### 二、核心功能及实现原理 ##### 2.1 功能简介 DBHelper通用类提供了以下几个核心功能: 1. **创建数据库...
1. **使用DbProviderFactory实例化正确的数据访问对象**:根据配置文件中指定的数据库提供程序,利用`DbProviderFactories.GetFactory`方法获取对应的`DbProviderFactory`实例,然后通过该实例创建`DbConnection`、`...
- "BLL"(业务逻辑层):这里可能包含了使用工厂模式创建的业务对象,这些对象调用数据访问层进行数据操作。 - "Model":模型层,定义了业务对象的数据结构。 - "SQLServerDAL":SQL Server数据访问层,实现了针对...
***为.NET开发者提供了强大的数据库操作能力,包括高效的数据库连接管理、数据操作以及事务处理等。 ***提供两种数据提供者模型:DataSet提供者和Connection提供者。DataSet提供者是基于微软的.NET Framework的...
它通过封装常见的数据库操作,简化了开发人员与数据库交互的过程,使得开发者能够更加专注于业务逻辑的实现,而不是被数据库访问细节所困扰。 #### 二、配置文件设置 在`web.config`文件中,我们首先定义了应用...
在Data.Dynamic命名空间的ObjectiveExtension类中,定义了一套IDbClient的扩展方法,能够使用更快捷的方式进行数据库操作。 .net对象传参 这些扩展方法具有与IDbClient中的方法很类似的签名,但能够接收一个用于...
数据库操作类 利用DbProviderFactory了. <br>1,方便,简单,扩展(复杂的话,专业的多多,不容自己来考虑) 2,方便无主键表的更新 3,方便输出到Excel(可以利用Select ..From [Sheet1$]来选择Excel数据再传...
相关推荐
1. 数据库连接池:为了提高性能和资源利用率,数据工厂通常会使用数据库连接池,它预先创建并管理一定数量的数据库连接,供多个线程复用,避免频繁的创建和销毁连接。 2. ORM(对象关系映射):ORM框架如Hibernate...
本知识点中介绍的正是这样一个用于***应用程序中,利用.NET框架提供的DbProviderFactories功能,编写的一个数据库操作类。 首先,要理解标题中提到的“DbProviderFactories”,这是.NET框架中用于创建数据提供程序...
为了实现跨平台、跨数据库类型的通用性,开发者通常需要创建一套能够适应多种数据库系统的通用数据库访问类。ADO.NET作为.NET Framework中的一个关键组成部分,为这一需求提供了强大的支持。通过本文,我们将深入...
数据库住户管理系统是一个基于VC++开发的应用程序,它深入利用了OLE DB技术来实现对小区住户信息的高效管理和操作。在本文中,我们将详细介绍这个系统的关键组成部分、开发过程以及OLE DB在数据库操作中的应用。 ...
可能包括创建 Database 对象,执行 SQL 查询、存储过程,以及如何利用 CommandBuilder 自动化数据操作。 6. **最佳实践**: - 使用 DAAB 可以遵循面向接口编程,将数据库逻辑与业务逻辑解耦,提高代码的可测试性。...
6. **DbProviderFactory类**:这个类是`System.Data.Common`命名空间的一部分,它允许根据数据提供者名称动态创建数据库连接。在代码中,`DbProviderFactories.GetFactory(DataProv)`用于根据`DataProv`变量获取对应...
- **数据访问层(DAL层)**:负责与数据库的交互,包括数据的增删改查,封装了对数据库的操作,通常使用ADO.NET或ORM(如Entity Framework)实现。 2. **WCF服务**: - **WCF是.NET框架的一部分,用于构建分布式...
Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象;跟踪对象所做的更改;并发处理;将对象更改传播到数据源等。 使用Entity Framework操作Access数据库...
4. **NpgsqlTransaction**: 实现了数据库事务,确保数据操作的一致性和完整性。 5. **NpgsqlDataAdapter**: 用于填充DataSet或DataTable,提供了一种离线操作数据库数据的方式。 6. **...
通常,它会使用ADO.NET提供的DbProviderFactory来创建数据库连接,并且利用Entity Framework的DbContext概念,为每个数据库操作提供上下文。在源码中,你可能会看到关于连接字符串、数据库类型识别以及连接池管理的...
在多数据库连接的情况下,通常会使用DBProviderFactory类,它可以动态创建与特定数据库兼容的数据提供者实例,从而实现数据库的透明切换。 三层架构是软件设计中的一种经典模式,其主要组成部分包括: 1. 数据访问...
在开发阶段,如果不清楚最终部署环境的具体数据库类型,可以利用`DbProviderFactory`来实现数据库无关性。`DbProviderFactory`是一种抽象类和接口机制,它可以用于动态获取不同类型的数据提供者,从而简化代码并提高...
3. **提供程序工厂**:.NET Framework提供了数据提供程序模型,其中的`DbProviderFactory`类是核心,它允许我们不依赖特定的数据库提供商(如SQL Server、Oracle等),而是通过统一的接口创建数据库连接。...
此类通过使用.NET Framework中的`System.Data`命名空间提供的接口和类来实现跨数据库的操作能力。 #### 二、核心功能及实现原理 ##### 2.1 功能简介 DBHelper通用类提供了以下几个核心功能: 1. **创建数据库...
1. **使用DbProviderFactory实例化正确的数据访问对象**:根据配置文件中指定的数据库提供程序,利用`DbProviderFactories.GetFactory`方法获取对应的`DbProviderFactory`实例,然后通过该实例创建`DbConnection`、`...
- "BLL"(业务逻辑层):这里可能包含了使用工厂模式创建的业务对象,这些对象调用数据访问层进行数据操作。 - "Model":模型层,定义了业务对象的数据结构。 - "SQLServerDAL":SQL Server数据访问层,实现了针对...
***为.NET开发者提供了强大的数据库操作能力,包括高效的数据库连接管理、数据操作以及事务处理等。 ***提供两种数据提供者模型:DataSet提供者和Connection提供者。DataSet提供者是基于微软的.NET Framework的...
它通过封装常见的数据库操作,简化了开发人员与数据库交互的过程,使得开发者能够更加专注于业务逻辑的实现,而不是被数据库访问细节所困扰。 #### 二、配置文件设置 在`web.config`文件中,我们首先定义了应用...
在Data.Dynamic命名空间的ObjectiveExtension类中,定义了一套IDbClient的扩展方法,能够使用更快捷的方式进行数据库操作。 .net对象传参 这些扩展方法具有与IDbClient中的方法很类似的签名,但能够接收一个用于...
数据库操作类 利用DbProviderFactory了. <br>1,方便,简单,扩展(复杂的话,专业的多多,不容自己来考虑) 2,方便无主键表的更新 3,方便输出到Excel(可以利用Select ..From [Sheet1$]来选择Excel数据再传...