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