通用許可權管理系統元件(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,如需轉載請自行聯絡原作者
相關文章
- 通用許可權管理系統元件(GPM-GeneralPermissionsManager)中靈活經典的.NET2.0資料庫訪問元件,附原始碼元件資料庫原始碼
- 通用許可權系統介紹
- 基於SSM框架的JavaWeb通用許可權管理系統SSM框架JavaWeb
- 使用者許可權設計(三)——通用資料許可權管理系統設計
- 【JavaWeb】許可權管理系統JavaWeb
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 企業許可權管理系統
- Winner許可權管理系統3.0
- OA管理系統,有哪些許可權管理?
- 基於RBAC的許可權管理系統
- Bauth許可權系統,基於ThinkPHP5開發 - 一個優秀的整合許可權管理的通用後臺PHP
- 使用者許可權系統管理
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- DRF內建許可權元件之自定義許可權管理類元件
- learun通用許可權系統框架功能實現設計框架
- vue-quasar-admin 一個包含通用許可權控制的後臺管理系統Vue
- Vue2.0 + ElementUI 手寫許可權管理系統後臺模板(二)——許可權管理VueUI
- JspSpringSecurity許可權管理系統JSSpringGse
- 有效管理Windows系統帳戶許可權Windows
- mongodb 的許可權系統MongoDB
- Android系統許可權和root許可權Android
- 基於tp3.2.3開發的許可權管理系統,路由,微信,cdn,許可權路由
- Linux 系統中的超級許可權的控制Linux
- MySQL許可權系統MySql
- Oracle系統許可權Oracle
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- 零基礎到CS開發高手通用許可權管理系統全程實錄
- Linux命令-使用者、許可權管理、系統管理Linux
- (逐步開源)物件管理系統--一個精確到欄位級的後臺許可權管理系統物件
- 基於tp3.2.3 的許可權管理系統更新
- 管理系統之許可權的設計和實現
- Confluence6對比系統管理員許可權和Confluence管理員許可權
- 有贊許可權系統
- Android系統許可權Android
- 許可權系統設計
- 許可權系統跟進
- Linux-許可權管理(ACL許可權)Linux
- 作業系統---IO許可權管理和敏感指令作業系統