前沿拓展:
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() ‘执行SQL语句,返回OleDbDataReader 对象
Do While ***.Read() ‘读取一条数据
textbox1.Text += reader(“一些数风径动据”) & VbCrLf
Loop
reader.Close() ‘关闭O评己非军土持失leDbDataReader
conn.Close() ‘关闭连接
1、安全身份验证基类重要性
为何要在讲解数据库**作核心类库前,需要讲解此基类。主要是基于以下几个因素:
相对安全性
既然是核心数据库**作类库,很大程度上,并不希望无关人员调用此类库,尤其是在企业内部或者第三方开发的应用程序被其他用户调用。
授权等级
同一团队合作中,为了管控每个用户的使用数据库**作等级。例如某个开发用户A,可从此类库调用的函数,只能是读取数据库,删除和更新则没有;某个开发用户B,可以调用此类库的读取、更新等**作数据库的函数,但函数提供的参数不一样,不可使用事务**作。
后续授权扩展可用性
此基类,可以让其他类库继承,并不一定只限制与**作数据库的内容;有些类库只属于核心团队调用;有些类库是普通团队也可以,各自开发组群根据各自需要自行设置安全等级参数。
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,意味着从高到低,授权等级越高,今后涉及到开发类库中,可调用的函数会越多。
如果你想A1,A2,A3怎么设置也一样,这个只是为了今后调用方案,统一这么设置。内部开发团队了解就ok,只是一个**作规范而已。
3、身份验证类库设计思路
属性信息设置
用户名
我们需要提高给开发用户一个账户,也是其唯一用户ID
授权信息
此用户授权信息是加密的信息,判断用户是否被授权调用此类库
校验码
此校验码,是在授权验证通过,提取用户的授权等级
授权验证通过
授权验证完毕后,返回一个属性,记录通过还是不通过,如果不通过,则直接强制退出
授权等级
最后验证完毕后,返回授权等级
返回信息
如果验证失败,则返回提示信息
方法设置
授权校验函数
对于授权码的验证,确定是否授权,授权通过,则返回授权验证通过
获取授权等级函数
在授权验证通过后,根据校验码,返回授权等级。
设计参数类型
为了类型使用并不确定,也为方便**作,此基类的相关参数采用泛型。
主要是定义VB.NET泛型类型时,即使用一个或多个数据类型将其参数化。这样可允许使用代码定制数据类型以满足其要求。代码可以通过泛型元素声明若干个不同的编程元素,每个元素可使用一组不同的数据类型。但是,无论声明的元素使用哪些数据类型,它们均执行相同的逻辑。
具体介绍,可以参考VB.net学习笔记(十九)数组、**、泛型 ,里面讲的不错。当然也可以在百度里搜索下VB.NET 泛型
基本的思路已经构造完毕,剩下编写代码
”’ <summary>
”’ 创建时间: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函数只能同类库中调用,隐藏类库,防止外部用户调用。
此基类+后续编译加密,可以防止非授权用户调用。
类库代码发布在github,
地址:https://github.com/chenfeng1029/LINKCommon
有兴趣的朋友可以下载,帮忙点个赞。
后续还要分篇讲解类库数据库**作的部分,敬请期待,保持关注。
拓展知识:
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/30570.html