2012-12-10

[ASP.NET] 分享 DB 處理物件

個人製作的 DB 處理物件, 適用於 Oracle、SQL Server 和 ODBC,有基本的執行、查詢和分頁查詢,除了分頁查詢以外,其餘都支援 Parameter 參數設定。

Example:
查詢
//引用物件
using DBLib;

//建立DBLib
DBLib db = new DBLib;
db.ParameterClear();
db.ParameterAdd(new CommandParameter("ID", "Tim"));
DataTable dt = db.Search("SELECT * FROM TBLUSER WHERE USERID = :ID");

分頁查詢
//引用物件
using DBLib;

//建立DBLib
DBLib db = new DBLib;
db.ParameterClear();
db.ParameterAdd(new CommandParameter("Zone", "123"));

//查詢第1頁(從0開始), 每頁10筆資料
DataTable dt = db.SearchByPagerNum("SELECT * FROM TBLUSER WHERE Zone = :Zone", 10, 0);

使用Transaction做Update
//引用物件
using DBLib;

//建立DBLib
DBLib db = new DBLib;

// Start Transaction
db.oConnection.Open();
IDbTransaction oTransaction = db.oConnection.BeginTransaction();
db.ParameterClear();
db.ParameterAdd(new CommandParameter("ID", "Tim"));


try
{
    db.ExecuteNonQuery("UPDATE TBLUSER SET USERID = 'TIM' WHERE USERID = :ID", oTransaction);
}
catch (Exception err)
{
    Response.Write("<br><br>Commit Error:" + err.ToString());
    oTransaction.Rollback();
    db.oConnection.Close();
    return;
}


// Commit Transaction
oTransaction.Commit();
db.oConnection.Close();

以下做個簡單說明~

<Property>
DefaultSort - 指定要 order by 的欄位。

<Method>
GetConnectionString(): 抓取設定於 Web.config 的 DB Connection String,Web.config 設定方式如下:
<configuration>
     <connectionStrings>
            <add name="DBConnectionString" connectionString="server=localhost;User ID=TEST;Password=TEST" providerName="System.Data.OracleClient"/>
     </connectionStrings>
</configuration>

ParameterClear(): 用來清空Parameter。

ParameterAdd(CommandParameter mCommandParamenter): 用來新增Parameter(建議先清空Parameter再來新增),EX: DBLib.ParameterClear(); DBLib.ParameterAdd(new CommandParameter("ID", "Tim"));

ExecuteNonQuery(string sSql): 執行SQL,不回傳資料集合。  

ExecuteNonQuery(string sSql, OracleTransaction oTransaction): 執行SQL,有Transaction的效果,不回傳資料集合。

Search(string sSql): 執行SQL,回傳資料集合DataTable。

Search(string sSql, OracleTransaction oTransaction): 執行SQL,有Transaction的效果,回傳資料集合DataTable。  

SearchByPagerNum(string sSql, int iPageSize, int iPageIndex): 執行SQL,有分頁的效果,只抓第iPageIndex這頁總共iPageSize筆資料(iPageIndex從0開始算),回傳資料集合DataTable。


 最新版本分享於 Dropbox


2017/06/08更新: 新增支援 ODBC 資料庫類型。  

2017/2/19更新:
(1) 微軟多年前已不再更新 System.Data.OracleClient,因此將它改成 Oracle 提供的 Provider:Oracle.ManagedDataAccess,但它只支援 Oracle DB 10.2 以上版本。 個人對於舊版本的 Oracle DB是使用 ODBC 來連結,DBLib 也改了一版 for ODBC 的
 (2) 新增 Class DBLibByDapper<TEntity>,用來使用 Dapper 的查詢,Dapper 使用方法可參考這裡

2013/02/19更新: 上述的 DB 處理物件(DBLib),在連 Oracle 時需用到 System.Data.OracleClient.dll,Visual Studio 有內建,沒有的人可以直接下載使用(分享)。 此次改成將所有連接 DB 的物件都改成介面,以方便支援不同的 DB,例如 OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction 都改成了IDbConnection、IDbCommand、IDbDataAdapter、IDbTransaction。 預設是連 Oracle,如果要改連 SqlServer,在宣告時就要指定好, EX:DBLib db = new DBLib(DBLib.DbType.SqlServer);

沒有留言:

張貼留言