您的位置:首页 > 数据库

数据工厂类,实现了跨数据库的操作

2016-11-01 08:44 239 查看
using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.Common;

using System.Configuration;

using System.Collections;

namespace TEWeb2.DBConnectionLayer

{

    /**/

    ///




    /// ========================================================

    /// 2009-7-3

    /// Tclywork Studio

    /// tclywork@163.com

    /// tclywork.itpub.net

    /// 数据工厂类,实现了跨数据库的操作.

    /// ========================================================

    ///

    public class DataAccess

    {

        #region 变量

        ///




        /// Webconfig配置连接字符串

        ///


        private string _confirString = "ConnectionString";

        /**/

        ///


        /// 属性,设置数据库连接字符串

        ///


        public string ConfigString

        {

            get

            {

                return _confirString;

            }

            set

            {

                _confirString = value;

            }

        }

        #endregion

        #region 构造函数

        /**/

        ///


        /// 数据工厂类

        ///


        public DataAccess()

        {

        }

        /**/

        ///


        /// 数据工厂类

        ///


        /// web.config 关键字

        public DataAccess(string configString)

        {

            ConfigString = configString;

        }

        #endregion

        #region  获得数据库的类型 public string GetProviderName(string ConfigString)#region 获得数据库的类型 public string GetProviderName(string ConfigString)

        /**/

        ///


        /// 返回数据提供者

        ///


        /// 返回数据提供者

        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;

        }

        /**/

        ///




        /// 返回数据提供者

        ///


        ///

        public string GetProviderName()

        {

            return GetProviderName(ConfigString);

        }

        #endregion

        //获得连接字符串=================================================================================

        #region 获得连接字符串

        /**/

        ///




        /// 获得连接字符串

        ///


        ///

        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);

        }

        #endregion

        //GetDbproviderFactory=========================


        #region  返回数据工厂  public DbProviderFactory GetDbProviderFactory()#region 返回数据工厂  public DbProviderFactory GetDbProviderFactory()

        /**/

        ///




        /// 返回数据工厂

        ///


        ///

        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;

        }

        /**/

        ///




        /// 返回数据工厂

        ///


        ///

        ///

        public DbProviderFactory GetDbProviderFactory(string providername)

        {

            return DbProviderFactories.GetFactory(providername);

        }

        #endregion

        //CreateConnection=============================

        #region 创建数据库连接 public DbConnection CreateConnection()#region 创建数据库连接 public DbConnection CreateConnection()

        /**/

        ///




        /// 创建数据库连接

        ///


        ///

        public DbConnection CreateConnection()

        {

            DbConnection con = GetDbProviderFactory().CreateConnection();

            con.ConnectionString = GetConnectionString();

            return con;

        }

        /**/

        ///


        /// 创建数据库连接

        ///


        ///

        ///

        public DbConnection CreateConnection(string provdername)

        {

            DbConnection con = GetDbProviderFactory(provdername).CreateConnection();

            con.ConnectionString = GetConnectionString();

            return con;

        }

        #endregion

        //CreateCommand================================

        #region     创建执行命令对象 public override DbCommand CreateCommand(string sql, CommandType cmdType, DbParameter[] parameters)#region 创建执行命令对象 public override DbCommand CreateCommand(string sql, CommandType cmdType,
DbParameter[] parameters)

        /**/

        ///




        /// 创建执行命令对象

        ///


        ///

        ///

        ///

        ///

        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;

        }

        /**/

        ///




        /// 创建执行命令对象

        ///


        /// SQL语句

        /// 执行命令对象实例

        public DbCommand CreateCommand(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            return CreateCommand(sql, CommandType.Text, parameters);

        }

        /**/

        ///


        /// 创建执行命令对象

        ///


        /// SQL语句

        /// 执行命令对象实例

        public DbCommand CreateCommand(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            return CreateCommand(sql, cmdtype, parameters);

        }

        /**/

        ///


        /// 创建执行命令对象

        ///


        /// SQL语句

        /// 参数

        /// 执行命令对象实例

        public DbCommand CreateCommand(string sql, DbParameter[] parameters)

        {

            return CreateCommand(sql, CommandType.Text, parameters);

        }

        #endregion

        //CreateAdapter()==============================================

        #region     创建数据适配器 CreateAdapter(string sql)#region 创建数据适配器 CreateAdapter(string sql)

        /**/

        ///




        /// 创建数据适配器

        ///


        /// SQL,语句

        /// 数据适配器实例

        public DbDataAdapter CreateAdapter(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            return CreateAdapter(sql, CommandType.Text, parameters);

        }

        /**/

        ///




        /// 创建数据适配器

        ///


        /// SQL语句

        /// 命令类型

        /// 数据适配器实例

        public DbDataAdapter CreateAdapter(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            return CreateAdapter(sql, cmdtype, parameters);

        }

        /**/

        ///


        /// 创建数据适配器

        ///


        /// 数据库连接字符串

        /// SQL语句

        /// 命令类型

        /// 参数

        /// 数据适配器实例

        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===================================

        #region 生成参数 public override SqlParameter CreateParameter(string field, string dbtype, string value)#region 生成参数 public override SqlParameter CreateParameter(string field, string dbtype, string value)

        /**/

        ///




        /// 创建参数

        ///


        /// 参数字段

        /// 参数类型

        /// 参数值

        ///

        public DbParameter CreateParameter(string field, string dbtype, string value)

        {

            DbParameter p = GetDbProviderFactory().CreateParameter();

            p.ParameterName = field;

            p.Value = value;

            return p;

        }

        #endregion

        //ExecuteCommand()============================================

        #region 执行非查询语句,并返回受影响的记录行数 ExecuteCommand(string sql)#region 执行非查询语句,并返回受影响的记录行数 ExecuteCommand(string sql)

        /**/

        ///




        /// 执行非查询语句,并返回受影响的记录行数

        ///


        /// SQL语句

        /// 受影响记录行数

        public int ExecuteCommand(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            return ExecuteCommand(sql, CommandType.Text, parameters);

        }

        /**/

        ///




        /// 执行非查询语句,并返回受影响的记录行数

        ///


        /// SQL语句

        /// 命令类型

        /// 受影响记录行数

        public int ExecuteCommand(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            return ExecuteCommand(sql, CommandType.Text, parameters);

        }

        /**/

        ///




        /// 执行非查询语句,并返回受影响的记录行数

        ///


        /// SQL语句

        /// 参数

        /// 受影响记录行数

        public int ExecuteCommand(string sql, DbParameter[] parameters)

        {

            return ExecuteCommand(sql, CommandType.Text, parameters);

        }

        /**/

        ///




        ///批量执行SQL语句

        ///


        /// SQL列表

        ///

        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;

            }

        }


        /**/

        ///




        /// 执行非查询语句,并返回受影响的记录行数

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// 受影响记录行数

        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()=============================================

        #region 执行非查询语句,并返回首行首列的值 ExecuteScalar(string sql)#region 执行非查询语句,并返回首行首列的值 ExecuteScalar(string sql)

        /**////



        /// 执行非查询语句,并返回首行首列的值

        ///


        /// SQL语句

        /// Object

        public object ExecuteScalar(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            return ExecuteScalar(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行非查询语句,并返回首行首列的值

        ///


        /// SQL语句

        /// 命令类型

        /// Object

        public object ExecuteScalar(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            return ExecuteScalar(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行非查询语句,并返回首行首列的值

        ///


        /// SQL语句

        /// 参数

        /// Object

        public object ExecuteScalar(string sql, DbParameter[] parameters)

        {

            return ExecuteScalar(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行非查询语句,并返回首行首列的值

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// Object

        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()=============================================

        #region 执行查询,并以DataReader返回结果集  ExecuteReader(string sql)#region 执行查询,并以DataReader返回结果集  ExecuteReader(string sql)

        /**////




        /// 执行查询,并以DataReader返回结果集

        ///


        /// SQL语句

        /// IDataReader

        public DbDataReader ExecuteReader(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            return ExecuteReader(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行查询,并以DataReader返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// IDataReader

        public DbDataReader ExecuteReader(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            return ExecuteReader(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行查询,并以DataReader返回结果集

        ///


        /// SQL语句

        /// 参数

        /// IDataReader

        public DbDataReader ExecuteReader(string sql, DbParameter[] parameters)

        {

            return ExecuteReader(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行查询,并以DataReader返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// IDataReader

        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()================================================

        #region 执行查询,并以DataSet返回结果集 GetDataSet(string sql)#region 执行查询,并以DataSet返回结果集 GetDataSet(string sql)

        /**////




        /// 执行查询,并以DataSet返回结果集

        ///


        /// SQL语句

        /// DataSet

        public DataSet GetDataSet(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            return GetDataSet(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行查询,并以DataSet返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// DataSet

        public virtual DataSet GetDataSet(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            return GetDataSet(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行查询,并以DataSet返回结果集

        ///


        /// SQL语句

        /// 参数

        /// DataSet

        public virtual DataSet GetDataSet(string sql, DbParameter[] parameters)

        {

            return GetDataSet(sql, CommandType.Text, parameters);

        }

        /**////



        /// 执行查询,并以DataSet返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataSet

        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;

        }

        /**////


        /// 执行查询,并以DataSet返回指定记录的结果集

        ///


        /// SQL语句

        /// 开始索引

        /// 显示记录

        /// DataSet

        public virtual DataSet GetDataSet(string sql, int StartIndex, int RecordCount)

        {

            return GetDataSet(sql, StartIndex, RecordCount);

        }

        #endregion

        //GetDataView()===============================================

        #region 执行查询,并以DataView返回结果集   GetDataView(string sql)#region 执行查询,并以DataView返回结果集   GetDataView(string sql)

        /**////



        /// 执行查询,并以DataView返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataView

        public DataView GetDataView(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            DataView dv = GetDataSet(sql, CommandType.Text, parameters).Tables[0].DefaultView;

            return dv;

        }

        /**////


        /// 执行查询,并以DataView返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataView

        public DataView GetDataView(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            DataView dv = GetDataSet(sql, cmdtype, parameters).Tables[0].DefaultView;

            return dv;

        }

        /**////


        /// 执行查询,并以DataView返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataView

        public DataView GetDataView(string sql, DbParameter[] parameters)

        {

            DataView dv = GetDataSet(sql, CommandType.Text, parameters).Tables[0].DefaultView;

            return dv;

        }


        /**////



        /// 执行查询,并以DataView返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataView

        public DataView GetDataView(string sql, CommandType cmdtype, DbParameter[] parameters)

        {

            DataView dv = GetDataSet(sql, cmdtype, parameters).Tables[0].DefaultView;

            return dv;

        }

        /**////



        /// 执行查询,并以DataView返回指定记录的结果集

        ///


        /// SQL语句

        /// 开始索引

        /// 显示记录

        /// DataView

        public DataView GetDataView(string sql, int StartIndex, int RecordCount)

        {

            return GetDataSet(sql, StartIndex, RecordCount).Tables[0].DefaultView;

        }

        #endregion

        //GetDataTable()==============================================

        #region 执行查询,并以DataTable返回结果集   GetDataTable(string sql)#region 执行查询,并以DataTable返回结果集   GetDataTable(string sql)

        /**/

        ///




        /// 执行查询,并以DataTable返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataTable

        public DataTable GetDataTable(string sql)

        {

            DbParameter[] parameters = new DbParameter[0];

            DataTable dt = GetDataSet(sql, CommandType.Text, parameters).Tables[0];

            return dt;

        }

        /**////


        /// 执行查询,并以DataTable返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataTable

        public DataTable GetDataTable(string sql, CommandType cmdtype)

        {

            DbParameter[] parameters = new DbParameter[0];

            DataTable dt = GetDataSet(sql, cmdtype, parameters).Tables[0];

            return dt;

        }

        /**////


        /// 执行查询,并以DataTable返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataTable

        public DataTable GetDataTable(string sql, DbParameter[] parameters)

        {

            DataTable dt = GetDataSet(sql, CommandType.Text, parameters).Tables[0];

            return dt;

        }


        /**////



        /// 执行查询,并以DataTable返回结果集

        ///


        /// SQL语句

        /// 命令类型

        /// 参数

        /// DataTable

        public DataTable GetDataTable(string sql, CommandType cmdtype, DbParameter[] parameters)

        {

            DataTable dt = GetDataSet(sql, cmdtype, parameters).Tables[0];

            return dt;

        }

        /**////



        /// 执行查询,并以DataTable返回指定记录的结果集

        ///


        /// SQL语句

        /// 开始索引

        /// 显示记录

        /// DataTable

        public DataTable GetDataTable(string sql, int StartIndex, int RecordCount)

        {

            return GetDataSet(sql, StartIndex, RecordCount).Tables[0];

        }

        /**////



        /// 执行查询,返回以空行填充的指定条数记录集

        ///


        /// SQL语句

        /// 显示记录条数

        /// DataTable

        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

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: