通用許可權管理系統元件(GPM-GeneralPermissionsManager)中超級經典的
最近有一個客戶諮詢能否單獨用通用許可權管理系統元件中的資料庫訪問元件,回答:“絕對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(“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>
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(“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>
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(“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>
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(“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);
}
}
// 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(“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>
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(“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>
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(“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>
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(“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);
}
}
例子程式下載地址如下:
.NET 2.0 資料庫訪問層原始碼在這裡下載:
/Files/jirigala/DotNet.Utilities.rar
本文轉自 jirigala 51CTO部落格,原文連結:http://blog.51cto.com/2347979/1196329,如需轉載請自行聯絡原作者
相關文章
- 基於SSM框架的JavaWeb通用許可權管理系統SSM框架JavaWeb
- 企業許可權管理系統
- Winner許可權管理系統3.0
- 超級詳細的mac系統檔案許可權修改指南Mac
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- 基於RBAC的許可權管理系統
- OA管理系統,有哪些許可權管理?
- Bauth許可權系統,基於ThinkPHP5開發 - 一個優秀的整合許可權管理的通用後臺PHP
- HIVE的許可權控制和超級管理員的實現Hive
- vue-quasar-admin 一個包含通用許可權控制的後臺管理系統Vue
- Linux 中的許可權管理Linux
- Confluence6對比系統管理員許可權和Confluence管理員許可權
- DRF內建許可權元件之自定義許可權管理類元件
- 在MacOS系統中如何管理隱私許可權控制?Mac
- Vue2.0 + ElementUI 手寫許可權管理系統後臺模板(二)——許可權管理VueUI
- learun通用許可權系統框架功能實現設計框架
- 通用許可權系統之資料庫表設計資料庫
- mongodb 的許可權系統MongoDB
- Linux系統中(CentOS 7)的使用者和許可權管理LinuxCentOS
- 許可權系統:一文搞懂功能許可權、資料許可權
- 取消 root 級管理員的 root 許可權
- Gate 超級管理員擁有全部許可權踩坑點
- 基於tp3.2.3開發的許可權管理系統,路由,微信,cdn,許可權路由
- HplusAdmin ASP.NET基本許可權管理系統ASP.NET
- (逐步開源)物件管理系統--一個精確到欄位級的後臺許可權管理系統物件
- 基於tp3.2.3 的許可權管理系統更新
- 管理系統之許可權的設計和實現
- 許可權系統:許可權應用服務設計
- 有贊許可權系統
- 基於Spring Security實現許可權管理系統Spring
- 作業系統---IO許可權管理和敏感指令作業系統
- Java寫圖書管理系統(四、管理員功能許可權)Java
- win10管理員許可權怎麼獲取 win10系統啟動管理許可權的辦法Win10
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- 打造自己的系統許可權控制
- 許可權系統:6個許可權概念模型設計模型
- 許可權系統:許可權應用服務設計Tu
- 如何設計應用系統的資料許可權管理
- Spring security(五)-完美許可權管理系統(授權過程分析)Spring