通用許可權管理系統元件(GPM-GeneralPermissionsManager)中超級經典的

技術小阿哥發表於2017-11-27

最近有一個客戶諮詢能否單獨用通用許可權管理系統元件中的資料庫訪問元件,回答:“絕對ok”,這個元件是經歷了多年的考驗,是值得信任的一個資料庫訪問元件,正好情人節了,給大家也分享一下,接著在下一個文章裡,寫動態的資料庫連線元件的用法。

  靜態的資料庫元件的用法是非常簡單的,功能也是相對簡單的,他的特點就是支援多資料庫、函式命名方式等編寫規範,思路嚴謹,可重複利用的價值高,移植性也好,建議初學者多用此資料庫訪問元件會更好一些。

  靜態訪問方法裡不推薦採用資料庫事務處理等,會在動態訪問組裡介紹此功能,還有一些超級複雜的功能,也不建議在自己的封裝的元件裡實現,那些超級個性化的的功能直接呼叫微軟的方法就可以了,根本沒封裝的任意意義,其實封裝太多也是畫蛇添足的事情,沒多大必要,適當的輕量級的封裝就足夠了。

  參考的例子程式碼如下:  

//—————————————————————–
// All Rights Reserved , Copyright (C) 2012 , Hairihan TECH, Ltd. 
//—————————————————————–

using System;
using System.Data;
using System.Collections.Generic;

using DotNet.Utilities;
using DotNet.Business;

///<summary>
/// DbTools
/// 靜態資料庫訪問的方法程式
///
/// 修改紀錄
///
///        2012-02-14 版本:1.0 JiRiGaLa 整理例子程式功能。
///
/// 版本:1.0
///
///<author>
///<name>JiRiGaLa</name>
///<date>2012-02-14</date>
///</author>
///</summary>
publicpartialclass DbTools : System.Web.UI.Page

{
protectedvoid Page_Load(object sender, EventArgs e)

   {
// 靜態方法呼叫資料庫的方法
this.StaticMethod();

   }

privatevoid StaticMethod()

   {
// 設定資料庫連線
       DotNet.Utilities.DbHelper.DbConnection = Data Source=localhost;Initial Catalog=UserCenterV36;User Id = sa ; Password = Password@1234;;
// 設定資料庫型別
       DotNet.Utilities.DbHelper.DbType = CurrentDbType.SqlServer;
// DotNet.Utilities.DbHelper.DbType = CurrentDbType.Oracle;
// DotNet.Utilities.DbHelper.DbType = CurrentDbType.MySql;
// DotNet.Utilities.DbHelper.DbType = CurrentDbType.DB2;
// DotNet.Utilities.DbHelper.DbType = CurrentDbType.Access;
// DotNet.Utilities.DbHelper.DbType = CurrentDbType.SQLite;

this.Fill();
this.ExecuteNonQuery();
this.ExecuteScalar();
this.ExecuteReader();

   }

///<summary>
/// Fill
/// 靜態方法呼叫資料庫的方法
///</summary>
privatevoid Fill()

   {
// 1:直接執行
string commandText = @”SELECT * 

                                FROM BASE_USER 

                               WHERE DeletionStateCode = 0
;

       DataTable dataTable = DotNet.Utilities.DbHelper.Fill(commandText);

// 2:防注入的安全的引數化執行方式執行查詢
       commandText = @” SELECT * 

                         FROM BASE_USER 

                        WHERE Code = 
 + DotNet.Utilities.DbHelper.GetParameter(Code)

                              +  AND DeletionStateCode =  + DotNet.Utilities.DbHelper.GetParameter(DeletionStateCode);
// 這裡是生成安全引數的方法
       List<IDbDataParameter> dbParameters = new List<IDbDataParameter>();

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(Codejirigala));

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(DeletionStateCode0));

       DotNet.Utilities.DbHelper.Fill(commandText, dbParameters.ToArray());

// 3:執行儲存過程,假設也是需要傳遞這2個引數,類似功能的一個儲存過程
//    我們不建議用儲存過程,因為會對系統移植,多資料庫設計等上會遇到很多麻煩
       commandText = GET_USER;

       dataTable = DotNet.Utilities.DbHelper.Fill(commandText, dbParameters.ToArray(), CommandType.StoredProcedure);

   }


///<summary>
/// ExecuteNonQuery
/// 靜態方法呼叫資料庫的方法
///</summary>
///<returns>影響行數</returns>
privateint ExecuteNonQuery()

   {
int returnValue = 0;

// 1:直接執行
string commandText = @”UPDATE BASE_USER

                                 SET DELETIONSTATECODE = 0
;

       returnValue = DotNet.Utilities.DbHelper.ExecuteNonQuery(commandText);

// 2:防注入的安全的引數化執行方式執行查詢
       commandText = @” UPDATE BASE_USER 

                           SET DELETIONSTATECODE = 0

                         WHERE CODE = 
 + DotNet.Utilities.DbHelper.GetParameter(Code)

                              +  AND DELETIONSTATECODE =  + DotNet.Utilities.DbHelper.GetParameter(DeletionStateCode);
// 這裡是生成安全引數的方法
       List<IDbDataParameter> dbParameters = new List<IDbDataParameter>();

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(Codejirigala));

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(DeletionStateCode0));

       returnValue = DotNet.Utilities.DbHelper.ExecuteNonQuery(commandText, dbParameters.ToArray());

// 3:執行儲存過程,假設也是需要傳遞這2個引數,類似功能的一個儲存過程
//    我們不建議用儲存過程,因為會對系統移植,多資料庫設計等上會遇到很多麻煩
       commandText = UPDATE_USER;

       returnValue = DotNet.Utilities.DbHelper.ExecuteNonQuery(commandText, dbParameters.ToArray(), CommandType.StoredProcedure);

return returnValue;

   }


///<summary>
/// ExecuteScalar
/// 靜態方法呼叫資料庫的方法
///</summary>
///<returns>結果</returns>
privateobject ExecuteScalar()

   {
object returnValue = null;

// 1:直接執行
string commandText = @”SELECT CODE 

                                FROM BASE_USER 

                               WHERE DELETIONSTATECODE = 0
;

       returnValue = DotNet.Utilities.DbHelper.ExecuteScalar(commandText);

// 2:防注入的安全的引數化執行方式執行查詢
       commandText = @” SELECT CODE 

                          FROM BASE_USER 

                         WHERE  CODE = 
 + DotNet.Utilities.DbHelper.GetParameter(Code)

                              +  AND DELETIONSTATECODE =  + DotNet.Utilities.DbHelper.GetParameter(DeletionStateCode);
// 這裡是生成安全引數的方法
       List<IDbDataParameter> dbParameters = new List<IDbDataParameter>();

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(Codejirigala));

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(DeletionStateCode0));

       returnValue = DotNet.Utilities.DbHelper.ExecuteScalar(commandText, dbParameters.ToArray());

// 3:執行儲存過程,假設也是需要傳遞這2個引數,類似功能的一個儲存過程
//    我們不建議用儲存過程,因為會對系統移植,多資料庫設計等上會遇到很多麻煩
       commandText = GET_USER;

       returnValue = DotNet.Utilities.DbHelper.ExecuteScalar(commandText, dbParameters.ToArray(), CommandType.StoredProcedure);

return returnValue;

   }

///<summary>
/// ExecuteReader
/// 靜態方法呼叫資料庫的方法
///</summary>
privatevoid ExecuteReader()

   {
// 1:直接執行
string commandText = @”SELECT * 

                                FROM BASE_USER

                               WHERE DELETIONSTATECODE = 0
;

       DotNet.Utilities.DbHelper.ExecuteReader(commandText);

// 2:防注入的安全的引數化執行方式執行查詢
       commandText = @” SELECT * 

                          FROM BASE_USER

                         WHERE CODE = 
 + DotNet.Utilities.DbHelper.GetParameter(Code)

                              +  AND DELETIONSTATECODE =  + DotNet.Utilities.DbHelper.GetParameter(DeletionStateCode);
// 這裡是生成安全引數的方法
       List<IDbDataParameter> dbParameters = new List<IDbDataParameter>();

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(Codejirigala));

       dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter(DeletionStateCode0));

       DotNet.Utilities.DbHelper.ExecuteReader(commandText, dbParameters.ToArray());

// 3:執行儲存過程,假設也是需要傳遞這2個引數,類似功能的一個儲存過程
//    我們不建議用儲存過程,因為會對系統移植,多資料庫設計等上會遇到很多麻煩
       commandText = GET_USER;

       DotNet.Utilities.DbHelper.ExecuteReader(commandText, dbParameters.ToArray(), CommandType.StoredProcedure);

   }

}


  例子程式下載地址如下:

/Files/jirigala/CRM.rar

  .NET 2.0 資料庫訪問層原始碼在這裡下載:

/Files/jirigala/DotNet.Utilities.rar

本文轉自 jirigala 51CTO部落格,原文連結:http://blog.51cto.com/2347979/1196329,如需轉載請自行聯絡原作者


相關文章