专栏中心

EEPW首页 > 专栏 > 数据访问控制

数据访问控制

发布人:0750long 时间:2010-03-11 来源:工程师 发布文章

数据访问控制
----多客户环境下VB 数据库编程之(二)

 在单用户环境中,只有一个用户在访问数据,因此应用程序不会发生资源请求冲突。而在多用户环境中,当用户访问数据时,可能会发生冲突。为了管理这些冲突,Microsoft Jet提供了数据访问控制和应用程序的锁定服务,以保证在给定的时间内只有一个用户可以访问数据。数据访问控制用来对数据库的部分或全部进行访问限制,通常可分为两类,一类是用户限制,另一类是功能限制。用户限制用来阻止某些人(或只允许某些人)查看或修改“敏感”数据。例如,在工资系统中,大多数人可以查看职工的工资,但只有少数人才有权修改实际的工资信息。功能限制只对程序的某个部分起作用,而不管用户是谁。例如,在订单登记系统中,如果把价格表设为只读模式,则可防止用户随意修改某些项目的价格。 在应用程序中,可以通过程序控制或Microsoft Jet数据库引擎控制来处理限制。其中程序控制可以施加于程序自身,而引擎级控制则限制了任何试图访问数据库信息的程序。

1.互斥地使用数据库。以互斥方式打开数据库是对数据访问施加的最大限制,它实际上是以“独占”方式使用数据库。这种限制可以阻止任何用户或程序访问正在使用的数据库中的信息。由于这种方式的限制太大,因而只用于那些影响整个数据库的操作,包括:

·压缩数据库。

·更新整个表(例如用UPDATE查询)

·通过添加表、字段或者索引来修改数据库的结构。

·处理特殊的用户需求(例如传送审计信息)

在程序代码中,为了以独占方式打开一个数据库,必须把OpenDatabase方法的第二个参数设置为True,例如:

Dim oldDb As Database

Dim oldws As workSpace

Set oldDboldWs.OpenDatabase("Members.mdb",True,False)

用上面的代码打开数据库时,如果该数据库未被其它用户使用,则打开数据库,这样直到关闭之前,该数据库不会被其它用户或程序访问;如果数据库正在被其它用户使用,则返回一个错误。

2.拒绝其它用户或程序访问指定的表。以独占方式打开数据库后,可以拒绝其它用户或程序访问整个数据库(包括数据库中的每个表)。而对数据访问的一种较轻的限制则是拒绝其它用户或程序访问由本人程序正在使用的表(即记录集),它实际上是对记录集进行锁定。锁定记录集的操作通过OpenRecordset方法中的Options参数来实现。我们知道,OpenRecordset方法的格式如下:

对象.OpenRecordset(type,OPtlons,lockedits)

其中的options参数用来设置对记录集的锁定,该参数可以取多种值,以下两种值用来禁止其它用户对记录集进行读写操作:

1..禁止读(dbDenyRead)

OpenRecordset方法中的dbDenyRead常量用来禁止其它用户查看表中的数据,直到关闭该表为止。当需要更新整个表中的信息时,可以使用这个常量。例如:

Dim rst as Recordset

Set rstdbs.OpenRecordset(strTable, _

dbOpenTable,dbDenyRead)

2.禁止写(dbDenywrite)

OpenRecordset方法中的dbDenyWrite常量用来禁止其它用户更新表中的数据,直到关闭该表为止。在这种情况下,其它用户可以查看表中的信息,也可以添加新记录,但不能对其进行修改。当需要向表中插入新记录而又不想修改现有的记录时,可以使用这个常量,它对表和动态集都有效。例如:

Dim rst as Recordset

Set rstdbs.OPenRecordset(strTable, _

dbOpenTabledbDenyWrite)

dbDenyReaddbDenyWrite可以分别禁止对记录集进行读和写,如果既想禁止读,又想禁止写,则可同时使用这两个常量(用“十”号连接)。例如:

Dim rst as Recordset

Set rstdbs.OpenRecordset(strTable, _

dbOpenTable,dbDenyRead + dbDenyWrite)

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

TLV320AIC3254 社区视频

视频 2010-03-17

Interfacing High-Speed ADCs to FPGAs with Embedded Transceivers

视频 2010-03-17

BOE(京东方)全新概念级“AI视听中心”亮相CES 2025

Allegro MicroSystems重新定义传感技术,推出全新紧凑型封装电流传感器IC

高频、薄型,且可像折纸一样弯曲加工的村田多层LCP基板

电子技术如何助力高铁节能?

分析FPGA收发器的互操作性和信号完整性

视频 2010-03-17

2024全球PC市场以略微增长收尾,2025年喜忧参半

智能计算 2025-01-10

分析FPGA收发器的互操作性和信号完整性

视频 2010-03-17

荣芯半导体:实现与客户共进退的定制化服务

在FPGA上开发嵌入式系统软件

视频 2010-03-17

比亚迪为什么没有拿下电耗水平领先的标签?

端到端来了,激光雷达就没有明天了吗?

机卡分离

资源下载 2007-02-13

DC_DC Solution

资源下载 2007-02-13

摩尔斯微电子推出MM8108:全球体积最小、速度最快、功耗最低、传输距离最远的Wi-Fi芯片

村田开发超小尺寸、超低功耗的Type 2GQ GNSS模块

更多 培训课堂
更多 焦点
更多 视频

技术专区