zoukankan      html  css  js  c++  java
  • 使用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;
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    Windows phone开发 网络编程之HttpWebRequest
    ASP.NET AJAX应用
    Web程序安全机制
    SQLCE本地数据库
    Web服务
    LINQ数据库技术
    windows phone媒体应用开发
    ASP.NET文件操作
    ASP.NET XML文件
    centos6.5安装配置fastdfs+nginx实现分布式图片服务器
  • 原文地址:https://www.cnblogs.com/mxxblog/p/2815154.html
Copyright © 2011-2022 走看看