通用權限管理系統組件 (GPM - General Permissions Manager) 中超級經典的.NET2.0靜態數據庫訪問組件,附源碼


   最近有一個客戶咨詢能否單獨用通用權限管理系統組件中的數據庫訪問組件,回答:“絕對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>
public  partial  class DbTools : System.Web.UI.Page
{
     protected  void Page_Load( object sender, EventArgs e)
    {
         //  靜態方法調用數據庫的方法
         this.StaticMethod();
    }

     private  void 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>
     private  void 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( " Code "" jirigala "));
        dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter( " DeletionStateCode "0));
        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>
     private  int 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( " Code "" jirigala "));
        dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter( " DeletionStateCode "0));
        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>
     private  object 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( " Code "" jirigala "));
        dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter( " DeletionStateCode "0));
        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>
     private  void 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( " Code "" jirigala "));
        dbParameters.Add(DotNet.Utilities.DbHelper.MakeParameter( " DeletionStateCode "0));
        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  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM