程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#下的SQL SERVER數據庫操作類

C#下的SQL SERVER數據庫操作類

編輯:關於C#

主要參考了MS的SqlHelper類,

在參考了SqlHelper的基礎進行修改而成,對一些基本的數據庫操作進行了封裝.

推薦使用

using (DBHelper db = new DBHelper(Config.ConnStr))
{
}

代碼如下:

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

namespace Liydotnet.Data.Core
{
  public class DBHelper : IDisposable
  {
    #region private
    private bool m_AlreadyDispose = false;
    private int m_CommandTimeout = 30;
    private string m_ConnStr;
    private SqlConnection m_Connection;
    private SqlCommand m_Command;
    #endregion
    #region 屬性
    /// <summary>
    /// 數據庫連接字符串
    /// </summary>
    public string ConnStr
    {
      set { m_ConnStr = value; }
      get { return m_ConnStr; }
    }
    /// <summary>
    /// 執行時間
    /// </summary>
    public int CommandTimeout
    {
      set { m_CommandTimeout = value; }
      get { return m_CommandTimeout; }
    }
    #endregion
    #region DBHelper
    /// <summary>
    /// 構造函數
    /// </summary>
    /// <param name="connStr">數據庫連接字符串</param>
    public DBHelper(string connStr)
    {
      m_ConnStr = connStr;
      Initialization();
    }
    /// <summary>
    /// 構造函數
    /// </summary>
    /// <param name="connStr">數據庫連接字符串</param>
    /// <param name="commandTimeout">執行時間</param>
    public DBHelper(string connStr, int commandTimeout)
    {
      m_ConnStr = connStr;
      m_CommandTimeout = commandTimeout;
      Initialization();
    }
    /// <summary>
    /// 初始化函數
    /// </summary>
    protected void Initialization()
    {
      try
      {
        m_Connection = new SqlConnection(m_ConnStr);
        if (m_Connection.State == ConnectionState.Closed)
          m_Connection.Open();
        m_Command = new SqlCommand();
      }
      catch (Exception ex)
      {
        throw new Exception(ex.Message.ToString());
      }
    }
    #endregion
    #region Dispose
    /// <summary>
    /// 析構函數
    /// </summary>
    ~DBHelper()
    {
      Dispose();
    }
    /// <summary>
    /// 釋放資源
    /// </summary>
    /// <param name="isDisposing">標志</param>
    protected virtual void Dispose(bool isDisposing)
    {
      if (m_AlreadyDispose) return;
      if (isDisposing)
      {
        if (m_Command != null)
        {
          m_Command.Cancel();
          m_Command.Dispose();
        }
        if (m_Connection != null)
        {
          try
          {
            if (m_Connection.State != ConnectionState.Closed)
              m_Connection.Close();
            m_Connection.Dispose();
          }
          catch (Exception ex)
          {
            throw new Exception(ex.ToString());
          }
          finally
          {
            m_Connection = null;
          }
        }
      }
      m_AlreadyDispose = true;//已經進行的處理
    }
    /// <summary>
    /// 釋放資源
    /// </summary>
    public void Dispose()
    {
      Dispose(true);
      GC.SuppressFinalize(this);
    }
    #endregion
    #region
    #endregion
    #region ExecuteNonQuery
    public int ExecuteNonQuery(string cmdText)
    {
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        int iRet = m_Command.ExecuteNonQuery();
        return iRet;
      }
      catch (Exception ex)
      {
        //Loger.Debug(ex.ToString(),@"C:\sql.txt");
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
      }
    }
    public int ExecuteNonQuery(string cmdText, SqlParameter[] para)
    {
      if (para == null)
      {
        return ExecuteNonQuery(cmdText);
      }
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        for (int i = 0; i < para.Length; i++)
          m_Command.Parameters.Add(para[i]);
        int iRet = m_Command.ExecuteNonQuery();
        return iRet;
      }
      catch (Exception ex)
      {
        //Loger.Debug(ex.ToString(), @"C:\sql.txt");
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }
    }
    public int ExecuteNonQuery(string cmdText, SqlParameter[] para, bool isStoreProdure)
    {
      if (!isStoreProdure)
      {
        return ExecuteNonQuery(cmdText, para);
      }
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        m_Command.CommandType = CommandType.StoredProcedure;
        if (para != null)
        {
          for (int i = 0; i < para.Length; i++)
            m_Command.Parameters.Add(para[i]);
        }
        int iRet = m_Command.ExecuteNonQuery();
        return iRet;
      }
      catch (Exception ex)
      {
        //Loger.Debug(ex.ToString(), @"C:\sql.txt");
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }
    }
    #endregion
    #region ExecuteTransaction
    public bool ExecuteTransaction(string[] cmdText)
    {
      SqlTransaction trans = m_Connection.BeginTransaction();
      try
      {
        m_Command = new SqlCommand();
        m_Command.Connection = m_Connection;
        m_Command.CommandTimeout = m_CommandTimeout;
        m_Command.Transaction = trans;
        for (int i = 0; i < cmdText.Length; i++)
        {
          if (cmdText[i] != null && cmdText[i] != string.Empty)
          {
            m_Command.CommandText = cmdText[i];
            m_Command.ExecuteNonQuery();
          }
        }
        trans.Commit();
        return true;
      }
      catch (Exception ex)
      {
        trans.Rollback();
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        trans.Dispose();
      }
    }
    public bool ExecuteTransaction(string[] cmdText, SqlParameter[] para)
    {
      if (para == null)
        return ExecuteTransaction(cmdText);
      SqlTransaction trans = m_Connection.BeginTransaction();
      try
      {
        m_Command = new SqlCommand();
        m_Command.Connection = m_Connection;
        m_Command.CommandTimeout = m_CommandTimeout;
        m_Command.Transaction = trans;
        for (int i = 0; i < para.Length; i++)
          m_Command.Parameters.Add(para[i]);
        for (int i = 0; i < cmdText.Length; i++)
        {
          if (cmdText[i] != null && cmdText[i] != string.Empty)
          {
            m_Command.CommandText = cmdText[i];
            m_Command.ExecuteNonQuery();
          }
        }
        trans.Commit();
        return true;
      }
      catch (Exception ex)
      {
        trans.Rollback();
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        trans.Dispose();
      }
    }
    #endregion
    #region ExecuteScalar
    public object ExecuteScalar(string cmdText)
    {
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        object obj = m_Command.ExecuteScalar();
        if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
        {
          obj = null;
        }
        return obj;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
      }
    }
    public object ExecuteScalar(string cmdText, SqlParameter[] para)
    {
      if (para == null)
        return ExecuteScalar(cmdText);
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        for (int i = 0; i < para.Length; i++)
          m_Command.Parameters.Add(para[i]);
        object obj = m_Command.ExecuteScalar();
        if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
          obj = null;
        return obj;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }
    }
    public object ExecuteScalar(string cmdText, SqlParameter[] para, bool isStoreProdure)
    {
      if (!isStoreProdure)
        return ExecuteScalar(cmdText, para);
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        m_Command.CommandType = CommandType.StoredProcedure;
        if (para != null)
          for (int i = 0; i < para.Length; i++)
            m_Command.Parameters.Add(para[i]);
        object obj = m_Command.ExecuteScalar();
        if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
          obj = null;
        return obj;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
        {
          m_Command.Dispose();
        }
        m_Command.Parameters.Clear();
      }
    }
    #endregion
    #region ExecuteDataTable
    public DataTable ExecuteDataTable(string tableName, string cmdText)
    {
      try
      {
        DataTable myTable = new DataTable(tableName);
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        SqlDataAdapter da = new SqlDataAdapter(m_Command);
        da.Fill(myTable);
        da.Dispose();
        return myTable;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
      }
    }
    public DataTable ExecuteDataTable(string tableName, string cmdText, SqlParameter[] para)
    {
      if (para == null)
        return ExecuteDataTable(tableName, cmdText);
      try
      {
        DataTable myTable = new DataTable(tableName);
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        for (int i = 0; i < para.Length; i++)
          m_Command.Parameters.Add(para[i]);
        SqlDataAdapter da = new SqlDataAdapter(m_Command);
        da.Fill(myTable);
        da.Dispose();
        return myTable;
      }
      catch (Exception ex)
      {
        //Loger.Debug(ex.ToString(), @"C:\sql.txt");
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }
    }
    public DataTable ExecuteDataTable(string tableName, string cmdText, SqlParameter[] para, bool isStoreProdure)
    {
      if (!isStoreProdure)
      {
        return ExecuteDataTable(tableName, cmdText, para);
      }
      try
      {
        DataTable myTable = new DataTable(tableName);
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        m_Command.CommandType = CommandType.StoredProcedure;
        if (para != null)
          for (int i = 0; i < para.Length; i++)
            m_Command.Parameters.Add(para[i]);
        SqlDataAdapter da = new SqlDataAdapter(m_Command);
        da.Fill(myTable);
        da.Dispose();
        return myTable;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }

    }
    #endregion
    #region ExecuteDataReader
    public SqlDataReader ExecuteDataReader(string cmdText)
    {
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        SqlDataReader reader = m_Command.ExecuteReader();
        return reader;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
      }
    }
    public SqlDataReader ExecuteDataReader(string cmdText, SqlParameter[] para)
    {
      if (para == null)
      {
        return ExecuteDataReader(cmdText);
      }
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        for (int i = 0; i < para.Length; i++)
          m_Command.Parameters.Add(para[i]);
        SqlDataReader reader = m_Command.ExecuteReader();
        return reader;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }
    }
    public SqlDataReader ExecuteDataReader(string cmdText, SqlParameter[] para, bool isStoreProdure)
    {
      if (!isStoreProdure)
      {
        return ExecuteDataReader(cmdText, para);
      }
      try
      {
        m_Command = new SqlCommand(cmdText, m_Connection);
        m_Command.CommandTimeout = m_CommandTimeout;
        m_Command.CommandType = CommandType.StoredProcedure;
        if (para != null)
          for (int i = 0; i < para.Length; i++)
            m_Command.Parameters.Add(para[i]);
        SqlDataReader reader = m_Command.ExecuteReader();
        return reader;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.ToString());
      }
      finally
      {
        if (m_Command != null)
          m_Command.Dispose();
        m_Command.Parameters.Clear();
      }
    }
    #endregion
    #region Static
    public static SqlParameter MakeInParam(string paraName, SqlDbType paraType, object value)
    {
      SqlParameter para = new SqlParameter(paraName, paraType);
      if (Object.Equals(value, null) || Object.Equals(value, DBNull.Value) || value.ToString().Trim() == string.Empty)
        para.Value = DBNull.Value;
      else
        para.Value = value;
      return para;
    }
    public static SqlParameter MakeInParam(string paraName, SqlDbType paraType, int len, object value)
    {
      SqlParameter para = new SqlParameter(paraName, paraType, len);
      if (Object.Equals(value, null) || Object.Equals(value, DBNull.Value) || value.ToString().Trim() == string.Empty)
        para.Value = DBNull.Value;
      else
        para.Value = value;
      return para;
    }
     #endregion
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved