前沿拓展:
vb.net數據庫
如果樓主熟悉VB6,可以直接在項目中添加ADODB的Com引用,這樣你就可以像VB6那樣**作數據庫零高移認放夫城買曾附洋了!
另外
.NET Framework中連接數據庫要用到***.NET。如果要**作Access數據庫,要用到***.Data.OleDb命名空間下的許多類。
比如按樓主所說,“我想在textbox1中顯示表一中【一些數據】字段下的第一個內容”:
‘第一導入命名空間
Imports ***.Data
Imports ***.Data父群厚站稱司新未否他.OleDb
‘第二在某一個**處理程序中寫:
Dim conn As New OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=數據庫.巴草米效逐accdb;Jet OLEDB:Database Password=MyDbPassword”)
Dim command As New OleDbCommand(“Select * From 數據表”, conn)
***.Open() ‘打開數據庫連接
Dim reader As OleDbDataReader = command.ExecuteReader() ‘執(zhí)行SQL語句,返回OleDbDataReader 對象
Do While ***.Read() ‘讀取一條數據
textbox1.Text += reader(“一些數風徑動據”) & VbCrLf
Loop
reader.Close() ‘關閉O評己非軍土持失leDbDataReader
conn.Close() ‘關閉連接
1、安全身份驗證基類重要性
為何要在講解數據庫**作核心類庫前,需要講解此基類。主要是基于以下幾個因素:
相對安全性
既然是核心數據庫**作類庫,很大程度上,并不希望無關人員調用此類庫,尤其是在企業(yè)內部或者第三方開發(fā)的應用程序被其他用戶調用。
授權等級
同一團隊合作中,為了管控每個用戶的使用數據庫**作等級。例如某個開發(fā)用戶A,可從此類庫調用的函數,只能是讀取數據庫,刪除和更新則沒有;某個開發(fā)用戶B,可以調用此類庫的讀取、更新等**作數據庫的函數,但函數提供的參數不一樣,不可使用事務**作。
后續(xù)授權擴展可用性
此基類,可以讓其他類庫繼承,并不一定只限制與**作數據庫的內容;有些類庫只屬于核心團隊調用;有些類庫是普通團隊也可以,各自開發(fā)組群根據各自需要自行設置安全等級參數。
2、授權等級設置
設置一個授權等級的枚舉類型:
”’ <summary>
”’ 說明:授權等級
”’ </summary>
”’ <remarks></remarks>
Public Enum EmpowerLevel
A = 1
B = 2
C = 3
D = 4
E = 5
F = 6
Z = 50
End Enum
授權等級從A-Z,意味著從高到低,授權等級越高,今后涉及到開發(fā)類庫中,可調用的函數會越多。
如果你想A1,A2,A3怎么設置也一樣,這個只是為了今后調用方案,統(tǒng)一這么設置。內部開發(fā)團隊了解就ok,只是一個**作規(guī)范而已。
3、身份驗證類庫設計思路
屬性信息設置
用戶名
我們需要提高給開發(fā)用戶一個賬戶,也是其唯一用戶ID
授權信息
此用戶授權信息是加密的信息,判斷用戶是否被授權調用此類庫
校驗碼
此校驗碼,是在授權驗證通過,提取用戶的授權等級
授權驗證通過
授權驗證完畢后,返回一個屬性,記錄通過還是不通過,如果不通過,則直接強制退出
授權等級
最后驗證完畢后,返回授權等級
返回信息
如果驗證失敗,則返回提示信息
方法設置
授權校驗函數
對于授權碼的驗證,確定是否授權,授權通過,則返回授權驗證通過
獲取授權等級函數
在授權驗證通過后,根據校驗碼,返回授權等級。
設計參數類型
為了類型使用并不確定,也為方便**作,此基類的相關參數采用泛型。
主要是定義VB.NET泛型類型時,即使用一個或多個數據類型將其參數化。這樣可允許使用代碼定制數據類型以滿足其要求。代碼可以通過泛型元素聲明若干個不同的編程元素,每個元素可使用一組不同的數據類型。但是,無論聲明的元素使用哪些數據類型,它們均執(zhí)行相同的邏輯。
具體介紹,可以參考VB.net學習筆記(十九)數組、**、泛型 ,里面講的不錯。當然也可以在百度里搜索下VB.NET 泛型
基本的思路已經構造完畢,剩下編寫代碼
”’ <summary>
”’ 創(chuàng)建時間:2019.8.10
”’ 作者: kevin zhu
”’ 說明:安全身份驗證基類,繼承此基類的子類要重寫
”’ </summary>
”’ <typeparam name=”T”>泛型參數,可以是用戶ID</typeparam>
”’ <typeparam name=”V”>泛型參數,默認是類授權碼</typeparam>
”’ <typeparam name=”P”>泛型參數,默認是過程及函數授權碼</typeparam>
”’ <remarks></remarks>
Public MustInherit Class SecuriVerify(Of T, V, P)
#Region “基類相關參數”
”’ <summary>
”’ 說明:授權用戶名
”’ </summary>
”’ <remarks>只能程序集里訪問</remarks>
Friend MUserName As T ‘//用戶名
”’ <summary>
”’ 說明: 類使用的授權碼
”’ </summary>
”’ <remarks>只能程序集里訪問</remarks>
Friend MSecuriKey As V ‘//類授權碼
”’ <summary>
”’ 說明:類里面的函數及過程調用的授權碼
”’ </summary>
”’ <remarks>只能程序集里訪問</remarks>
Friend MProcKey As P ‘//類中函數及過程授權碼
”’ <summary>
”’ 說明:身份驗證通過與否標記
”’ </summary>
”’ <remarks>程序集或派生類可以訪問</remarks>
Protected MSecuriPass As Integer
”’ <summary>
”’ 說明:’//過程及函數授權等級
”’ </summary>
”’ <remarks>只能在程序集或者派生類中訪問</remarks>
Protected MProcLevel As EmpowerLevel
”’ <summary>
”’ 說明:錯誤信息記錄
”’ </summary>
”’ <remarks></remarks>
Public MErrMessage As String
#End Region
#Region “基類相關屬性”
”’ <summary>
”’ 說明:返回過程及函數使用的等級
”’ </summary>
”’ <value></value>
”’ <returns></returns>
”’ <remarks></remarks>
Protected MustOverride ReadOnly Property ProcLevel As EmpowerLevel
”’ <summary>
”’ 說明: 類調用前身份驗證是否通過。1=通過,0=不通過
”’ </summary>
”’ <value></value>
”’ <returns></returns>
”’ <remarks>未通過,則無法使用調用類</remarks>
Protected MustOverride ReadOnly Property SecuriPass As Integer ‘//驗證碼是否通過。1=通過,0=不通過
Public MustOverride ReadOnly Property ErrMessage As String ‘//錯誤信息反饋
#End Region
”’ <summary>
”’ 說明:有些類確實需要不帶參數的構造函數
”’ </summary>
”’ <remarks>程序集內部可以訪問</remarks>
Friend Sub New()
MSecuriPass = 0
MProcLevel = EmpowerLevel.Z
MErrMessage = “”
End Sub
”’ <summary>
”’ 說明: 聲明的構造函數保證了外部程序集不可繼承該類
”’ </summary>
”’ <remarks></remarks>
Friend Sub New(ByVal vUserName As T, ByVal vSecuriKey As V, ByVal vProcKey As P)
MSecuriPass = 0
MProcLevel = EmpowerLevel.Z
MErrMessage = “”
Try
MUserName = vUserName
MSecuriKey = vSecuriKey
MProcKey = vProcKey
MSecuriPass = CheckCode(MUserName, MSecuriKey)
If MSecuriPass = 0 Then
ExportMessage(“Error-1<未被授權無法調用>”)
Exit Sub
End If
‘//進行過程及函數授權等級獲取
MProcLevel = ProcPermission(vProcKey)
Catch ex As Exception
ExportMessage(ex.Message)
Exit Sub
End Try
End Sub
#Region “基類相關函數及過程”
”’ <summary>
”’ 說明:身份驗證函數,輸入用戶及驗證碼確認無誤后。返回值1,否則返回值0
”’ </summary>
”’ <param name=”vUserName”>用戶名</param>
”’ <param name=”vCode”>驗證碼</param>
”’ <returns>驗證通過1,不通過=0</returns>
”’ <remarks>當前函數子類內部可以訪問</remarks>
Friend MustOverride Function CheckCode(vUserName As T, vCode As V) As Integer
”’ <summary>
”’ 說明:過程及函數調用前的驗證。根據驗證碼返回使用等級,不同函數及過程劃分幾個使用等級
”’ </summary>
”’ <param name=”vCode”>函數及過程授權碼</param>
”’ <returns></returns>
”’ <remarks>當前函數子類內部可以訪問</remarks>
Friend MustOverride Function ProcPermission(vCode As P) As EmpowerLevel
#End Region
End Class
代碼解釋:
其中CheckCode和ProcPermission函數聲明成friend,其實是考慮是基類,繼承子類要重寫,friend函數只能同類庫中調用,隱藏類庫,防止外部用戶調用。
此基類+后續(xù)編譯加密,可以防止非授權用戶調用。
類庫代碼發(fā)布在github,
地址:https://github.com/chenfeng1029/LINKCommon
有興趣的朋友可以下載,幫忙點個贊。
后續(xù)還要分篇講解類庫數據庫**作的部分,敬請期待,保持關注。
拓展知識:
原創(chuàng)文章,作者:九賢生活小編,如若轉載,請注明出處:http://xiesong.cn/30570.html