在Access中实现密码管理的另一种方式
2024-07-21 02:12:32
供稿:网友
大家都知道,数据库的安全性是很重要的,它直接影响到数据库的广泛应用。用户可以采用任意一种方法来保护数据库应用程序,也可以将几种方法结合起来使用。利用access数据库自身提供的加密功能及其他保护方法是很容易的,我就不多说了。在access数据库中,嵌入了一种很强的数据库操作语言——visualbasic语言,所以可以采用visualbasic编写程序,来实现一些复杂的功能。下面将介绍如何在visualbasic程序中实现加密功能,以确保数据的安全性。
---- 对于一些公司来说,职员的工资管理是一个不大不小的问题。有时,领导需要了解一段时间内每个职员的收入如何,以便掌握各项奖金的发放情况。为此,我设计了一个“工资管理”数据库,可以按时间进行查询,并根据所选的工资类别进行统计。为了防止其他人查看此数据库,我采用“独占”方式给数据库设置了密码。这种方法也有一定的局限性,如果用户恰巧提供了正确的数据库密码,该方法就不能控制用户对数据库进行操作。
---- 为了进一步防止职员查看工资的统计结果(即有些奖金并不是公开的,除领导以外的其他人不应该知道工资数目),我又创建了一个密码表,设置好密码,记住并将其隐藏起来(先选中“密码表”,再单击“窗口”菜单中的“隐藏”命令,即可把此表隐藏起来)。然后,在“职工工资对话框”窗体中,添加“密码”文本框,并在“预览”及“打印”的事件过程中加入下列语句:
docmd.applyfilter , "密码 = forms!
职工工资对话框!passtext"
if not isnull([密码]) then
/*其他代码*/
else
msgbox "请输入正确的密码!"
passtext.setfocus
end if
/*其他代码*/
---- 这样,就实现了双重加密功能。即使用户能进入数据库,如果第二次没有提供正确的密码,他也不能预览和打印一定时间范围的统计结果。这就进一步限制了用户的非授权访问 。
---- 为了提高数据库的安全性,每隔一段时间都应更改密码。为此,在“职工工资对话框”窗体中,我又添加了一个“更改密码”子窗体,在此窗体中加入下列代码,即可随时更改密码 :
private sub确定_click()
on error goto err_确定_click
docmd.applyfilter , "密码
= forms!更改密码!text1"
if isnull([密码]) then
msgbox ("密码不正确,
请再输入一次")
text1.setfocus
goto exit_确定_click:
end if
if text3.value < > text2.value then
text3.setfocus
msgbox ("请输入正确的确认密码")
else:
密码 = text3.value
docmd.close
end if
exit_确定_click:
exit sub
err_确定_click:
msgbox err.description
resume exit_确定_click
end sub
---- 更改密码后,应记住此密码,以备以后使用。
---- 设计好程序,并将有关代码隐藏起来(与隐藏“ 表”的方法相同),以防其他人修改或偷看。这里介绍的方法只是在程序中实现加密功能的一个小技巧,在其他数据库管理中,也可采用此方法进行加密。也许存在更为简洁的方法,有待大家在编程过程中发掘出来并互相交流。