數據庫類(Access專用) 未測試

using System;
using System.Data;
using System.Configuration;
using System.Data.OleDb;


/// <summary>
/// 通用數據庫類(Access專用)未測試
/// <author>ZhengFei</author>
/// <version>2.0版</version>
/// <realseDate>2007-5-10</realseDate>
/// </summary>
namespace AccessDataBase
{
    
public class AccDataBase
    {
        
string _ConnStr = "";
        
/// <summary>
        
/// 不帶參數的構造函數(默認取web.config中的連接字符串)
        
/// </summary>
        public AccDataBase()
        {
            _ConnStr 
= ConfigurationManager.ConnectionStrings["AccConn"].ToString();
        }
        
/// <summary>
        
/// 構造函數(重載,帶連接字符串)
        
/// </summary>
        
/// <param name="connstr">數據庫連接字符串</param>
        public AccDataBase(string connstr)
        {
            
try
            {
                
this._ConnStr = connstr;
            }
            
catch (Exception ep)
            {
                
throw ep;
            }
        }
        
/// <summary>
        
/// 數據庫鏈接字符串
        
/// </summary>
        public string ConnStr
        {
            
get
            {
                
return _ConnStr;
            }
            
set
            {
                _ConnStr 
= value;
            }
        }
        
/// <summary>
        
/// 獲得一個已連接數據庫的OleDbConnection對象
        
/// </summary>
        
/// <returns>返回一個已連接數據庫的OleDbConnection對象</returns>
        public OleDbConnection GetConn()
        {
            OleDbConnection Conn 
= new OleDbConnection(_ConnStr);
            
try
            {
                Conn.Open();
            }
            
catch
            {
                
throw;
            }
            
return Conn;
        }
        
/// <summary>
        
/// 釋放資源,並回收垃圾
        
/// </summary>
        
/// <returns></returns>
        public void Dispose(OleDbConnection Conn)
        {
            
if (Conn != null)
            {
                Conn.Close();
                Conn.Dispose();
            }
            GC.Collect();
        }
        
/// <summary>
        
/// 生成Command對象
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <param name="Conn">OledbConnection對象</param>
        
/// <returns></returns>
        public OleDbCommand CreateCommand(string SQL, OleDbConnection Conn)
        {
            
if (Conn.State != ConnectionState.Open)
            {
                
try
                {
                    Conn.Open();

                }
                
catch
                {
                    
throw;
                }
            }
            OleDbCommand Cmd 
= new OleDbCommand(SQL, Conn);
            
return Cmd;
        }

        
/// <summary>
        
/// 返回adapter對象
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <param name="Conn">SqlConnection連接對象</param>
        
/// <returns>返回adapter對象</returns>
        public OleDbDataAdapter CreateDataAdapter(string SQL, OleDbConnection Conn)
        {
            
if (Conn.State != ConnectionState.Open)
            {
                
try
                {
                    Conn.Open();
                }
                
catch
                {
                    
throw;
                }
            }
            OleDbDataAdapter Da 
= new OleDbDataAdapter(SQL, Conn);
            
return Da;
        }
        
public OleDbDataAdapter CreateDataAdapter(OleDbCommand cmd)
        {
            OleDbDataAdapter Da 
= new OleDbDataAdapter(cmd);
            
return Da;
        }
        
/// <summary>
        
/// 驗證是否有數據
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <returns></returns>
        public bool ExistDate(string SQL)
        {
            OleDbConnection Conn 
= this.GetConn();
            OleDbDataReader dr;
            dr 
= this.CreateCommand(SQL, Conn).ExecuteReader();
            
if (dr.Read())
            {
                Dispose(Conn);
                
return true;
            }
            
else
            {
                Dispose(Conn);
                
return false;
            }
        }
        
/// <summary>
        
/// 返回一個帶參數的OledbCommand對象
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <param name="Conn">OLEDBConnection對象</param>
        
/// <param name="sp">OleDbParameter數組</param>
        
/// <returns></returns>
        public OleDbCommand CreateCommand(string SQL, OleDbConnection Conn, OleDbParameter[] sp)
        {
            
try
            {
                
if (Conn.State != ConnectionState.Open)
                {
                    Conn.Open();
                }
            }
            
catch
            {
                
throw;
            }
            OleDbCommand Cmd 
= new OleDbCommand(SQL, Conn);
            
if (sp != null)
            {
                Cmd.Parameters.Clear();
                
foreach (OleDbParameter s in sp)
                    Cmd.Parameters.Add(s);
            }
            
return Cmd;
        }
        
/// <summary>
        
/// 執行無參數的OLEDBCommand對象(無返回)
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        public void Execute(string SQL)
        {
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
try
            {
                CreateCommand(SQL, conn).ExecuteNonQuery();
            }
            
catch
            {
                
throw;
            }
            
finally
            {
                Dispose(conn);
            }
            
return;
        }
        
/// <summary>
        
/// 執行有參數的OLEDBCommand對象(無返回)
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <param name="SP">OleDbParameter參數數組</param>
        public void Execute(string SQL, OleDbParameter[] SP)
        {
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
try
            {
                CreateCommand(SQL, conn, SP).ExecuteNonQuery();
            }
            
catch
            {
                
throw;
            }
            
finally
            {
                Dispose(conn);
            }
            
return;
        }
        
/// <summary>
        
/// 執行SQL語句返回OledbDataReader(記得關閉)
        
/// </summary>
        
/// <param name="SQL"></param>
        
/// <returns></returns>
        public OleDbDataReader ExecuteReader(string SQL)
        {
            OleDbDataReader dr;
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
try
            {
                dr 
= CreateCommand(SQL, conn).ExecuteReader();
            }
            
catch
            {
                
throw;
            }
            
return dr;
        }
        
/// <summary>
        
/// 執行SQL語句返回OledbDataReader(記得關閉)
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <param name="SP">OleDbParameter數組</param>
        
/// <returns></returns>
        public OleDbDataReader ExecuteReader(string SQL, OleDbParameter[] SP)
        {
            OleDbDataReader dr;
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
try
            {
                dr 
= CreateCommand(SQL, conn, SP).ExecuteReader();
            }
            
catch
            {
                
throw;
            }
            
return dr;
        }
        
/// <summary>
        
/// 執行SQL語句返回DataSet
        
/// </summary>
        
/// <param name="SQL"></param>
        
/// <returns></returns>
        public DataSet ExecuteDataSet(string SQL, string TableName)
        {
            DataSet ds 
= new DataSet();
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
try
            {
                CreateDataAdapter(SQL, conn).Fill(ds, TableName);
            }
            
catch
            {
                
throw;
            }
            
finally
            {
                Dispose(conn);
            }

            
return ds;
        }
        
/// <summary>
        
/// 執行SQL語句返回DataSet
        
/// </summary>
        
/// <param name="SQL">SQL語句</param>
        
/// <param name="TableName">表名</param>
        
/// <param name="sp">參數數組</param>
        
/// <returns></returns>
        public DataSet ExecuteDataSet(string SQL, string TableName, OleDbParameter[] sp)
        {
            DataSet ds 
= new DataSet();
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
try
            {
                CreateDataAdapter(CreateCommand(SQL, conn, sp)).Fill(ds, TableName);
            }
            
catch
            {
                
throw;
            }
            
finally
            {
                Dispose(conn);
            }
            
return ds;
        }
        
/// <summary>
        
/// 創建輸入參數
        
/// </summary>
        
/// <param name="ParameterName">參數名稱</param>
        
/// <param name="DbType">參數類型</param>
        
/// <param name="Size">參數大小</param>
        
/// <param name="Value">參數值</param>
        
/// <returns>新的參數</returns>
        public OleDbParameter MakeInputParameter(string ParameterName, OleDbType DbType, int Size, object Value)
        {
            
return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Input, Value);
        }

        
/// <summary>
        
/// 創建輸出參數
        
/// </summary>
        
/// <param name="ParameterName">參數名稱</param>
        
/// <param name="DbType">參數類型</param>
        
/// <param name="Size">參數大小</param>
        
/// <returns>新的參數</returns>
        public OleDbParameter MakeOutParameter(string ParameterName, OleDbType DbType, int Size)
        {
            
return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Output, null);
        }

        
/// <summary>
        
/// 創建儲存過程參數
        
/// </summary>
        
/// <param name="ParameterName">參數名稱</param>
        
/// <param name="DbType">參數類型</param>
        
/// <param name="Size">參數大小</param>
        
/// <param name="Direction">參數方法</param>
        
/// <param name="Value">參數值</param>
        
/// <returns>新的參數</returns>
        public OleDbParameter MakeParameter(string ParameterName, OleDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
        {
            OleDbParameter AccParam;
            
if (Size > 0)
            {
                AccParam 
= new OleDbParameter(ParameterName, DbType, Size);
            }
            
else
            {
                AccParam 
= new OleDbParameter(ParameterName, DbType);
            }

            AccParam.Direction 
= Direction;
            
if (!(Direction == ParameterDirection.Output && Value == null))
            {
                AccParam.Value 
= Value;
            }
            
return AccParam;
        }
        
/// <summary>
        
/// 查詢指定數量數據,返回DataSet(用於分頁)
        
/// </summary>
        
/// <param name="TableName">表名</param>
        
/// <param name="PK">主鍵</param>
        
/// <param name="Fields">要查詢的字段</param>
        
/// <param name="Sort">排序字段</param>
        
/// <param name="Filter">查詢條件</param>
        
/// <param name="PageSize">每頁大小</param>
        
/// <param name="CurrentPage">當前頁碼</param>
        
/// <returns></returns>
        public DataSet GetDataSet(string TableName, string PK, string Fields, string Sort, string Filter, int PageSize, int CurrentPage)
        {
            DataSet ds 
= new DataSet();
            OleDbConnection conn
=new OleDbConnection(ConnStr);
            conn.Open();
            
string sql = "", and = "";
            
int num = 0;
            
if (Fields == "") Fields = "*";
            
if (Sort == "")
            {
                Sort 
= string.Format("order by {0} asc", PK);
            }
            
else
            {
                Sort 
= string.Format("order by {0}", Sort);
            }
            
if (PageSize <= 0) PageSize = 10;
            
if (CurrentPage < 1) CurrentPage = 1;
            num 
= (CurrentPage - 1* PageSize;
            
if (Filter != "")
            {
                Filter 
= "where (" + Filter + ")";
                and 
= "and";
            }
            
else
            {
                and 
= "where";
            }
            
if (CurrentPage == 1)
            {
                sql 
= string.Format("select top {0} {1} from {2} {3} {4}", PageSize, Fields, TableName, Filter, Sort);
            }
            
else
            {
                sql 
= string.Format("select top {0} {1} from {2} {3} {4} ({5} not in(select top {6} {7} from {8} {9} {10})) {11}", PageSize, Fields, TableName, Filter, and, PK, num, PK, TableName, Filter, Sort, Sort);
            }
            ds 
= ExecuteDataSet(sql, TableName);
            
return ds;
        }
        
/// <summary>
        
/// 查詢指定數量數據,返回OleDbDataReader(用於分頁)
        
/// </summary>
        
/// <param name="TableName">表名</param>
        
/// <param name="PK">主鍵</param>
        
/// <param name="Fields">要查詢的字段</param>
        
/// <param name="Sort">排序字段</param>
        
/// <param name="Filter">查詢條件</param>
        
/// <param name="PageSize">每頁大小</param>
        
/// <param name="CurrentPage">當前頁碼</param>
        
/// <returns></returns>
        public OleDbDataReader GetDataReader(string TableName, string PK, string Fields, string Sort, string Filter, int PageSize, int CurrentPage)
        {
            OleDbDataReader dr;
            OleDbConnection conn 
= new OleDbConnection(ConnStr);
            conn.Open();
            
string sql = "", and = "";
            
int num = 0;
            
if (Fields == "") Fields = "*";
            
if (Sort == "")
            {
                Sort 
= string.Format("order by {0} asc", PK);
            }
            
else
            {
                Sort 
= string.Format("order by {0}", Sort);
            }
            
if (PageSize <= 0) PageSize = 10;
            
if (CurrentPage < 1) CurrentPage = 1;
            num 
= (CurrentPage - 1* PageSize;
            
if (Filter != "")
            {
                Filter 
= "where (" + Filter + ")";
                and 
= "and";
            }
            
else
            {
                and 
= "where";
            }
            
if (CurrentPage == 1)
            {
                sql 
= string.Format("select top {0} {1} from {2} {3} {4}", PageSize, Fields, TableName, Filter, Sort);
            }
            
else
            {
                sql 
= string.Format("select top {0} {1} from {2} {3} {4} ({5} not in(select top {6} {7} from {8} {9} {10})) {11}", PageSize, Fields, TableName, Filter, and, PK, num, PK, TableName, Filter, Sort, Sort);
            }
            dr 
= ExecuteReader(sql);
            
return dr;
        }
    }
}
 
發佈了19 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章