zoukankan      html  css  js  c++  java
  • C#下一个SQL SERVER数据库操作类

    主要参考了M$的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(false);
            }
            
    /// <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
        }
    }
  • 相关阅读:
    SetROP2
    JOIN
    Delphi深度探索之PItemIDList的基本概念
    访问网络资源示例
    AVICAP 中文
    AVICAP (全)
    摄像头(简介)
    以远程计算机上的用户身份访问Com+应用
    非匿名方式访问远程的com+
    三层控件基础知识
  • 原文地址:https://www.cnblogs.com/liydotnet/p/1134995.html
Copyright © 2011-2022 走看看