zoukankan      html  css  js  c++  java
  • SqlHelper数据库访问类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    namespace CommDAL
    {
        public class SqlHelper
        {

            private string sqlConnString;       // 数据库连接字符串
            private SqlConnection sqlConn = new SqlConnection();    // SQL数据库连接对象

            private ConnectionState sqlConnPreState = ConnectionState.Closed;   //原来数据库的连接状态


            /// <summary>
            /// 数据库连接字符串属性。
            /// </summary>
            public string SqlConnectionString
            {
                get
                {
                    return sqlConnString;
                }
                set
                {
                    sqlConnString = value;
                    sqlConn.ConnectionString = sqlConnString;
                }
            }


            public SqlHelper()
            {

            }
            /// <summary>
            /// 构造函数。
            /// </summary>
            /// <param name="strSqlCon">数据库连接字符串。</param>
            public SqlHelper(string strSqlCon)
            {
                sqlConnString = strSqlCon;
                sqlConn.ConnectionString = sqlConnString;

            }

            /// <summary>
            /// 析构函数。
            /// </summary>
            ~SqlHelper()
            {
                try
                {
                    Close();
                    sqlConn.Dispose();
                }
                catch (Exception ex)
                {

                    //throw ex;
                    Console.Write(ex.Message);
                }

            }

            /// <summary>
            /// 打开数据库连接。
            /// </summary>
            public void Open()
            {
                try
                {
                    if (sqlConn.State == ConnectionState.Closed)
                    {
                        sqlConn.Open();
                        sqlConnPreState = ConnectionState.Open;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }

            }

            /// <summary>
            /// 关闭数据库连接。
            /// </summary>
            public void Close()
            {
                try
                {
                    if (sqlConn.State != ConnectionState.Closed)
                    {
                        sqlConn.Close();
                        sqlConnPreState = ConnectionState.Closed;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }


            /// <summary>
            /// 获取查询的数据表。
            /// </summary>
            /// <param name="strSQL">要查询的SQL语句。</param>
            /// <param name="parametes">传入的参数,无参数时使用NULL。</param>
            /// <returns></returns>
            public DataTable GetDataTable(string strSQL, params SqlParameter[] parametes)
            {
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();

                try
                {
                    //sqlConn.Open();
                    if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed)        //若原来的状态为关闭且当前连接未打开
                    {
                        sqlConn.Open();
                    }

                    SqlCommand sqlCmd = sqlConn.CreateCommand();
                    sqlCmd.CommandText = strSQL;

                    if (parametes != null)
                    {
                        sqlCmd.Parameters.Clear();
                        sqlCmd.Parameters.AddRange(parametes);
                    }

                    SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
                    da.Fill(ds);
                    dt = ds.Tables[0];
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed)  //若原来的状态为关闭且者当前连接未关闭则关闭
                    {
                        sqlConn.Close();
                    }
                }
                return dt;

            }


            /// <summary>
            /// 获取查询的数据集。
            /// </summary>
            /// <param name="strSQL">要查询的SQL语句。</param>
            /// <param name="parametes">传入的参数,无参数时使用NULL。</param>
            /// <returns></returns>
            public DataSet GetDataSet(string strSQL, params SqlParameter[] parametes)
            {
                DataSet ds = new DataSet();
                try
                {
                    //sqlConn.Open();
                    if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed)        //若原来的状态为关闭且当前连接未打开
                    {
                        sqlConn.Open();
                    }
                    SqlCommand sqlCmd = sqlConn.CreateCommand();
                    sqlCmd.CommandText = strSQL;

                    if (parametes != null)
                    {
                        sqlCmd.Parameters.Clear();
                        sqlCmd.Parameters.AddRange(parametes);
                    }

                    SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
                    da.Fill(ds);
                    sqlConn.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed)  //若原来的状态为关闭且者当前连接未关闭则关闭
                    {
                        sqlConn.Close();
                    }
                }
                return ds;
            }


            /// <summary>
            /// 返回SqlDataReader对象。该函数需要在外部打开和关闭连接操作。
            /// </summary>
            /// <param name="strSQL">传入的SQL语句。</param>
            /// <param name="parametes">传入的参数,无参数时使用NULL。</param>
            /// <returns></returns>
            public SqlDataReader ExecuteReader(string strSQL, params SqlParameter[] parametes)
            {
                SqlDataReader reader;
                try
                {
                    if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed)        //若原来的状态为关闭且当前连接未打开
                    {
                        sqlConn.Open();
                    }
                    //SqlCommand sqlCmd = sqlConn.CreateCommand();
                    SqlCommand sqlCmd = sqlConn.CreateCommand();
                 
                    sqlCmd.CommandText = strSQL;

                    if (parametes != null)
                    {
                        sqlCmd.Parameters.Clear();
                        sqlCmd.Parameters.AddRange(parametes);
                    }

                    //reader = sqlCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                    reader = sqlCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return reader;
            }

            /// <summary>
            /// 返回执行T-SQL语句受影响的行数。
            /// </summary>
            /// <param name="strSQL">执行的SQL语句。</param>
            /// <param name="parametes">传入的参数,无参数时使用NULL。</param>
            /// <returns></returns>
            public int ExecuteNonQuery(string strSQL, params SqlParameter[] parametes)
            {

                int sqlInt = -1;
                try
                {
                    if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed)        //若原来的状态为关闭且当前连接未打开
                    {
                        sqlConn.Open();
                    }

                    SqlCommand sqlCmd = sqlConn.CreateCommand();
                    sqlCmd.CommandText = strSQL;

                    if (parametes != null)
                    {
                        sqlCmd.Parameters.Clear();
                        sqlCmd.Parameters.AddRange(parametes);
                    }

                    sqlInt = sqlCmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed)  //若原来的状态为关闭且者当前连接未关闭则关闭
                    {
                        sqlConn.Close();
                    }
                }
                return sqlInt;

            }

            /// <summary>
            /// 执行查询并返回第一行第一列的值。
            /// </summary>
            /// <param name="strSQL">执行的SQL语句。</param>
            /// <param name="parametes">传入的参数,无参数时使用NULL。</param>
            /// <returns></returns>
            public object ExecuteScalar(string strSQL, params SqlParameter[] parametes)
            {
                object obj;
                try
                {
                    if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed)        //若原来的状态为关闭且当前连接未打开
                    {
                        sqlConn.Open();
                    }

                    SqlCommand sqlCmd = sqlConn.CreateCommand();
                    sqlCmd.CommandText = strSQL;

                    if (parametes != null)
                    {
                        sqlCmd.Parameters.Clear();
                        sqlCmd.Parameters.AddRange(parametes);
                    }

                    obj = sqlCmd.ExecuteScalar();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                //finally
                //{
                //    if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed)  //若原来的状态为关闭且者当前连接未关闭则关闭
                //    {
                //        sqlConn.Close();
                //    }
                //}
                return obj;
            }

        }
    }

  • 相关阅读:
    LeetCode Flatten Binary Tree to Linked List
    LeetCode Longest Common Prefix
    LeetCode Trapping Rain Water
    LeetCode Add Binary
    LeetCode Subsets
    LeetCode Palindrome Number
    LeetCode Count and Say
    LeetCode Valid Parentheses
    LeetCode Length of Last Word
    LeetCode Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/QMM2008/p/4131193.html
Copyright © 2011-2022 走看看