使用db工厂DBHelper类

使用过很多版本的dbhelper无论是自己写还是用被人的但是基本方法都是大同小异,各有千秋一个偶然的机会我发现的使用db工厂来创建操作数据库过程中所需要的各种对象,

这样有一个好处就是,进一步使得数据库与程序的分离,降低他们之间的耦合,当我们由access变更成sqlser或者oracle是仅仅只需要更改配置参数,甚至工厂类微软已经帮我们写好了,不需要明白具体的含义 只需要使用 ,然后更改配置便可以在不同数据库之间进行切换。

<connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
    <add name="DataConnection" connectionString="Data Source=.;Initial Catalog=实验4temp;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

以上是config文件中的配置字符串 这里以sqlserver参数为类

线面就是  dbhelper类了  ,此类的产生是由我参考别人的,再经过自己的理解建立起来的功能不是特别完善,但基本常用都有了,可以加入自己的理解自己的想法去进一步完善。

 

在程序中不同层之间以接口进行连接  ,降低耦合也是程序更易于维护,左右闲来无事分享下吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.Common;
using System.Data;
using System.Data.OleDb;
//============================================================
//http://www.cnblogs.com/mxxblog/
//联系Email:446883859@qq.com
//联系qq:446883859
//============================================================

namespace DbHelper
{
    public class SqlHelperFactory
    {
        //db工厂参数
        //Provider=Microsoft.Jet.OLEDB.4.0
        //private static string connectionString = conStr;
        //providerName="System.Data.SqlClient"
        // providerName = "System.Data.OleDb";
        /// <summary>
        /// 链接字符串从Config文件中获取name为 DataConnection
        /// </summary>
        private static string connectionString = ConfigurationManager.ConnectionStrings["DataConnection"].ConnectionString;
        /// <summary>
        /// providerName
        /// </summary>
        private static string providerName = ConfigurationManager.ConnectionStrings["DataConnection"].ProviderName;
        /// <summary>
        /// DbProviderFactory  db工厂
        /// </summary>
        private static DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory(providerName);
        /// <summary>
        /// 创建数据库链接
        /// </summary>
        /// <returns></returns>
        protected static DbConnection createDbConnection()
        {
            DbConnection dbConnection = dbProviderFactory.CreateConnection();
            dbConnection.ConnectionString = connectionString;
            return dbConnection;
        }
        /// <summary>
        /// 创建参数
        /// </summary>
        /// <param name="parameterName">参数名称</param>
        /// <param name="value">参数值</param>
        /// <param name="dbtype">参数类型</param>
        /// <param name="dataSize">大小</param>
        /// <param name="parameterDirection">输入输出类型</param>
        /// <returns>返回参数DbParameter</returns>
        public static DbParameter createDbParameter(string parameterName, object value, DbType dbtype, int dataSize, ParameterDirection parameterDirection)
        {
            DbParameter dbParameter = dbProviderFactory.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            dbParameter.DbType = dbtype;
            dbParameter.Size = dataSize;
            dbParameter.Direction = parameterDirection;
            return dbParameter;
        }
        /// <summary>
        /// 创建参数
        /// </summary>
        /// <param name="parameterName">参数名称</param>
        /// <param name="value">参数值</param>
        /// <param name="dbtype">参数类型</param>
        /// <param name="parameterDirection">输入输出类型</param>
        /// <returns>返回参数DbParameter</returns>
        public static DbParameter createDbParameter(string parameterName, object value, DbType dbtype, ParameterDirection parameterDirection)
        {
            DbParameter dbParameter = dbProviderFactory.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            dbParameter.DbType = dbtype;

            dbParameter.Direction = parameterDirection;
            return dbParameter;
        }
        /// <summary>
        /// 创建参数
        /// </summary>
        /// <param name="parameterName">名称</param>
        /// <param name="value">值</param>
        /// <returns>返回参数DbParameter</returns>
        public static DbParameter createDbParameter(string parameterName, object value)
        {
            DbParameter dbParameter = dbProviderFactory.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            return dbParameter;
        }
        /// <summary>
        /// createAddDbParameter 添加参数到对应cmd
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="parameterName"></param>
        /// <param name="value"></param>
        /// <param name="dbtype"></param>
        /// <param name="dataSize"></param>
        /// <param name="parameterDirection"></param>
        protected void createAddDbParameter(DbCommand cmd, string parameterName, object value, DbType dbtype, int dataSize, ParameterDirection parameterDirection)
        {
            DbParameter dbParameter = cmd.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            dbParameter.DbType = dbtype;
            dbParameter.Size = dataSize;
            dbParameter.Direction = parameterDirection;
            cmd.Parameters.Add(dbParameter);

        }
        /// <summary>
        /// createAddDbParameter 添加参数到对应cmd
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="parameterName"></param>
        /// <param name="value"></param>
        /// <param name="dbtype"></param>
        /// <param name="parameterDirection"></param>
        protected static void createAddDbParameter(DbCommand cmd, string parameterName, object value, DbType dbtype, ParameterDirection parameterDirection)
        {
            DbParameter dbParameter = cmd.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            dbParameter.DbType = dbtype;
            dbParameter.Direction = parameterDirection;
            cmd.Parameters.Add(dbParameter);

        }
        /// <summary>
        /// createAddDbParameter 添加参数到对应cmd
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="parameterName"></param>
        /// <param name="value"></param>
        /// <param name="parameterDirection"></param>
        protected static void createAddDbParameter(DbCommand cmd, string parameterName, object value, ParameterDirection parameterDirection)
        {
            DbParameter dbParameter = cmd.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            dbParameter.Direction = parameterDirection;
            cmd.Parameters.Add(dbParameter);

        }
        /// <summary>
        /// 向指定cmd添加参数
        /// </summary>
        /// <param name="cmd">cmd</param>
        /// <param name="parameterName">参数名称</param>
        /// <param name="value">参数值</param>
        protected static void createAddDbParameter(DbCommand cmd, string parameterName, object value)
        {
            DbParameter dbParameter = cmd.CreateParameter();
            dbParameter.ParameterName = parameterName;
            dbParameter.Value = value;
            cmd.Parameters.Add(dbParameter);

        }
        /// <summary>
        /// RunExecuteNonQuery
        /// </summary>
        /// <param name="cmdTxt">要执行的sql语句</param>
        /// <param name="paras">值集合</param>
        /// <returns>返回受影响的行数</returns>
        public static int RunExecuteNonQuery(string cmdTxt, params  IDbDataParameter[] paras)
        {
            using (IDbConnection con = createDbConnection())
            {
                con.Open();
                using (IDbCommand cmd = con.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = cmdTxt;
                    foreach (var item in paras)
                    {
                        cmd.Parameters.Add(item);
                    }
                    return cmd.ExecuteNonQuery();
                }
            }
            // return 0;
        }
        /// <summary>
        /// RunExecuteNonQueryByPro 执行对应的存储过程
        /// </summary>
        /// <param name="proName">存储过程名称</param>
        /// <param name="paras">参数集合</param>
        /// <returns>返回受影响的行数</returns>
        public static int RunExecuteNonQueryByPro(string proName, params  IDbDataParameter[] paras)
        {
            using (IDbConnection con = createDbConnection())
            {
                con.Open();
                using (IDbCommand cmd = con.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = proName;
                    foreach (var item in paras)
                    {
                        cmd.Parameters.Add(item);
                    }
                    return cmd.ExecuteNonQuery();
                }
            }
            // return 0;
        }
        /// <summary>
        /// RunExecuteScalar
        /// </summary>
        /// <param name="cmdTxt">sql语句</param>
        /// <param name="paras">参数集合</param>
        /// <returns>返回首行首列</returns>
        public static object RunExecuteScalar(string cmdTxt, params IDbDataParameter[] paras)
        {
            using (IDbConnection con = createDbConnection())
            {
                con.Open();
                using (IDbCommand cmd = con.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = cmdTxt;
                    foreach (var item in paras)
                    {
                        cmd.Parameters.Add(item);
                    }
                    return cmd.ExecuteScalar();
                }
            }
            // return 0;
        }
        /// <summary>
        /// RunExecuteScalarByPro
        /// </summary>
        /// <param name="proName">存储过程名称</param>
        /// <param name="paras">参数集合</param>
        /// <returns>返回首行首列</returns>
        public static object RunExecuteScalarByPro(string proName, params IDbDataParameter[] paras)
        {
            using (IDbConnection con = createDbConnection())
            {
                con.Open();
                using (IDbCommand cmd = con.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = proName;
                    foreach (var item in paras)
                    {
                        cmd.Parameters.Add(item);
                    }
                    return cmd.ExecuteScalar();
                }
            }
            // return 0;
        }
        /// <summary>
        /// RunExecuteDataReader
        /// </summary>
        /// <param name="cmdTxt">要执行的sql语句</param>
        /// <param name="paras">参数集合</param>
        /// <returns>返回数据读取器</returns>
        public static IDataReader RunExecuteDataReader(string cmdTxt, params IDbDataParameter[] paras)
        {
            IDbConnection con = createDbConnection();
            con.Open();
            using (IDbCommand cmd = con.CreateCommand())
            {
                cmd.Connection = con;
                cmd.CommandText = cmdTxt;
                foreach (var item in paras)
                {
                    cmd.Parameters.Add(item);
                }
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }

        }
        /// <summary>
        /// RunExecuteDataTable
        /// </summary>
        /// <param name="cmdTxt">执行的sql语句</param>
        /// <param name="paras">参数集合</param>
        /// <returns>DataSet通过适配器返回DataSet</returns>
        public static DataSet RunExecuteDataTable(string cmdTxt, params IDbDataParameter[] paras)
        {
            DataSet ds = new DataSet();
            using (IDbConnection con = createDbConnection())
            {
                con.Open();
                using (IDbCommand cmd = con.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = cmdTxt;
                    foreach (var item in paras)
                    {
                        cmd.Parameters.Add(item);
                    }
                    IDbDataAdapter sda = dbProviderFactory.CreateDataAdapter();
                    sda.SelectCommand = cmd;
                    sda.Fill(ds);
                    return ds;
                }
            }
        }
    }
}

 

 

转载于:https://www.cnblogs.com/mxxblog/archive/2012/12/12/2815154.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace MyOfficeDAL { public static class DBHelper { private static SqlConnection connection; public static SqlConnection Connection { get { string connectionString = ConfigurationManager.ConnectionStrings["MyOfficeConnectionString"].ConnectionString; connection = new SqlConnection(connectionString); if (connection == null) { connection.Open(); } else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); } else if (connection.State == System.Data.ConnectionState.Broken) { connection.Close(); connection.Open(); } return connection; } } public static int ExecuteCommand(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); int result = cmd.ExecuteNonQuery(); return result; } public static int ExecuteCommand(string sql, params SqlParameter[] values) { SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); return cmd.ExecuteNonQuery(); } public static string ReturnStringScalar(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); try { string result = cmd.ExecuteScalar().ToString(); return result; } catch (Exception ex) { return "0"; } connection.Close(); } public static int GetScalar(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); try { int result = Convert.ToInt32(cmd.ExecuteScalar()); return result; } catch (Exception e) { return 0; } connection.Close(); } public static int GetScalar(string sql, params SqlParameter[] values) { SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); int result = Convert.ToInt32(cmd.ExecuteScalar()); return result; connection.Close(); } public static SqlDataReader GetReader(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); SqlDataReader reader = cmd.ExecuteReader(); return reader; reader.Close(); reader.Dispose(); } public static SqlDataReader GetReader(string sql, params SqlParameter[] values) { SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); SqlDataReader reader = cmd.ExecuteReader(); return reader; reader.Close(); reader.Dispose(); } public static DataTable GetDataSet(string safeSql) { DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(safeSql, Connection); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); connection.Close(); connection.Dispose(); return ds.Tables[0]; } public static DataTable GetDataSet(string sql, params SqlParameter[] values) { DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); connection.Close(); connection.Dispose(); return ds.Tables[0]; } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值