我经常使用的数据支持模块

来源:互联网 发布:盘锦淘宝装修 编辑:程序博客网 时间:2024/05/17 09:21

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace MyDAL
{
    /// <summary>
    /// 数据支持模块
    /// </summary>
    public static class DBHelper
    {

        /// <summary>
        /// 连接器对象
        /// </summary>
        private static SqlConnection connection;
        public static SqlConnection Connection
        {
            get
            {
                string connectionString = ConfigurationSettings.AppSettings["ConnectionString2008"].ToString();
                if (connection == null)
                {
                    connection = new SqlConnection(connectionString);
                    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;
            }
        }

        /// <summary>
        /// 执行功能语句
        /// </summary>
        /// <param name="safeSql">SQL语句</param>
        /// <returns>执行条数</returns>
        public static int ExecuteCommand(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            int result = cmd.ExecuteNonQuery();
            return result;
        }

        /// <summary>
        /// 执行功能语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="values">SQL条件参数</param>
        /// <returns>执行条数</returns>
        public static int ExecuteCommand(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            return cmd.ExecuteNonQuery();
        }

        /// <summary>
        /// 执行统计查询语句
        /// </summary>
        /// <param name="safeSql">SQL语句</param>
        /// <returns>符合条件数目</returns>
        public static int GetScalar(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            return result;
        }

        /// <summary>
        /// 执行统计查询语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="values">SQL条件参数</param>
        /// <returns>符合条件数目</returns>
        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;
        }

        /// <summary>
        /// 执行统计查询语句
        /// </summary>
        /// <param name="safeSql">SQL语句</param>
        /// <returns>结果</returns>
        public static object GetScalarToObj(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            return cmd.ExecuteScalar();
        }

        /// <summary>
        /// 执行统计查询语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="values">SQL条件参数</param>
        /// <returns>结果</returns>
        public static object GetScalarToObj(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            return cmd.ExecuteScalar();
        }

        /// <summary>
        /// 执行单条数据查询语句
        /// </summary>
        /// <param name="safeSql">SQL语句</param>
        /// <returns>查询结果</returns>
        public static SqlDataReader GetReader(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            SqlDataReader reader = cmd.ExecuteReader();
            return reader;
        }

        /// <summary>
        /// 执行单条查询语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="values">SQL条件参数</param>
        /// <returns>查询结果</returns>
        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;
        }

        /// <summary>
        /// 执行多数据查询语句
        /// </summary>
        /// <param name="safeSql">SQL语句</param>
        /// <returns>查询结果集</returns>
        public static DataTable GetDataSet(string safeSql)
        {
            DataSet ds = new DataSet();
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);
            return ds.Tables[0];
        }

        /// <summary>
        /// 执行多数据查询语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="values">SQL条件参数</param>
        /// <returns>查询结果集</returns>
        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);
            return ds.Tables[0];
        }

        /// <summary>
        /// 说  明:  返回数据集的表的集合
        /// 返回值:  数据源的数据表
        /// 参  数:  myCmd 执行SQL语句命令的SqlCommand对象,TableName 数据表名称
        /// </summary>
        public static DataTable GetDataSet(SqlCommand myCmd, string TableName)
        {
            SqlDataAdapter adapt;
            DataSet ds = new DataSet();
            try
            {
                if (myCmd.Connection.State != ConnectionState.Open)
                {
                    myCmd.Connection.Open();
                }
                adapt = new SqlDataAdapter(myCmd);
                adapt.Fill(ds, TableName);
                return ds.Tables[TableName];

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);

            }
            finally
            {
                if (myCmd.Connection.State == ConnectionState.Open)
                {
                    myCmd.Connection.Close();

                }
            }

        }

        /// <summary>
        /// 执行存储过程语句,返回sqlCommand类对象
        /// </summary>
        /// <param name="strProcName">存储过程名</param>
        /// <returns>返回sqlCommand类对象</returns>
        public static SqlCommand GetCommandProc(string strProcName)
        {
            SqlCommand myCmd = new SqlCommand();
            myCmd.Connection = Connection;
            myCmd.CommandText = strProcName;
            myCmd.CommandType = CommandType.StoredProcedure;
            return myCmd;
        }

        /// <summary>
        /// 执行SQL语句
        /// </summary>
        /// <param name="myCmd">执行SQL语句命令的SqlCommand对象</param>
        public static void ExecNonQuery(SqlCommand myCmd)
        {
            try
            {
                if (myCmd.Connection.State != ConnectionState.Open)
                {
                    myCmd.Connection.Open(); //打开与数据库的连接
                }
                //使用SqlCommand对象的ExecuteNonQuery方法执行SQL语句,并返回受影响的行数
                myCmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (myCmd.Connection.State == ConnectionState.Open)
                {
                    myCmd.Connection.Close(); //关闭与数据库的连接
                }
            }
        }

        /// <summary>
        /// 说  明:  执行SQL语句,返回数据源的数据表
        /// 返回值:  数据源的数据表DataTable
        /// 参  数:  sqlStr执行的SQL语句,TableName 数据表名称
        /// </summary>
        public static DataTable GetDataSetStr(string sqlStr, string TableName)
        {
            SqlConnection myConn = Connection;
            DataSet ds = new DataSet();
            SqlDataAdapter adapt = new SqlDataAdapter(sqlStr, Connection);
            adapt.Fill(ds, TableName);
            myConn.Close();
            return ds.Tables[TableName];
        }

        /// <summary>
        /// 执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。
        /// </summary>
        /// <param name="myCmd"></param>
        /// <returns>执行SQL语句命令的SqlCommand对象</returns>
        public static string ExecScalar(SqlCommand myCmd)
        {
            string strSql;
            try
            {
                if (myCmd.Connection.State != ConnectionState.Open)
                {
                    myCmd.Connection.Open(); //打开与数据库的连接
                }
                //使用SqlCommand对象的ExecuteScalar方法执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。

                strSql = Convert.ToString(myCmd.ExecuteScalar());
                return strSql;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (myCmd.Connection.State == ConnectionState.Open)
                {
                    myCmd.Connection.Close();//关闭与数据库的连接
                }
            }
        }

        /// <summary>
        /// 执行查询语句,返回sqlCommand类对象
        /// </summary>
        /// <param name="strSql">查询语句</param>
        /// <returns>返回sqlCommand类对象</returns>
        public static SqlCommand GetCommandStr(string strSql)
        {
            SqlConnection myConn = Connection;
            SqlCommand myCmd = new SqlCommand();
            myCmd.Connection = myConn;
            myCmd.CommandText = strSql;
            myCmd.CommandType = CommandType.Text;
            return myCmd;
        }

    }
}