VB 数据库编程Word格式.docx

上传人:b****3 文档编号:8299424 上传时间:2023-05-10 格式:DOCX 页数:13 大小:26.22KB
下载 相关 举报
VB 数据库编程Word格式.docx_第1页
第1页 / 共13页
VB 数据库编程Word格式.docx_第2页
第2页 / 共13页
VB 数据库编程Word格式.docx_第3页
第3页 / 共13页
VB 数据库编程Word格式.docx_第4页
第4页 / 共13页
VB 数据库编程Word格式.docx_第5页
第5页 / 共13页
VB 数据库编程Word格式.docx_第6页
第6页 / 共13页
VB 数据库编程Word格式.docx_第7页
第7页 / 共13页
VB 数据库编程Word格式.docx_第8页
第8页 / 共13页
VB 数据库编程Word格式.docx_第9页
第9页 / 共13页
VB 数据库编程Word格式.docx_第10页
第10页 / 共13页
VB 数据库编程Word格式.docx_第11页
第11页 / 共13页
VB 数据库编程Word格式.docx_第12页
第12页 / 共13页
VB 数据库编程Word格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB 数据库编程Word格式.docx

《VB 数据库编程Word格式.docx》由会员分享,可在线阅读,更多相关《VB 数据库编程Word格式.docx(13页珍藏版)》请在冰点文库上搜索。

VB 数据库编程Word格式.docx

在发动应用程序时查看部件的最新版别。

例如,应用程序的发动代码能够把本地数据库中静态目标的修正日期与效劳器的中心数据库中的日期进行对比,若是发现效劳器目标的日期较新,则主动输入目标的最新版别,使本地数据库坚持最新。

用MicrosoftJet的仿制功用使目标同步。

例如,能够树立数据库的复本并把它们存储在作业站上,然后就能够经过仿制功用主动使目标同步。

“数据库复本”在后面将讲到。

  

(2)动态部件:

是一些文件,由在多用户环境顶用户拜访的实践数据组成。

这些文件

  包含MicrosoftJet数据库(.mdb)文件、外部数据库文件(如MicrosoftFoxPro数据库文件)或存储在数据库效劳器上的ODBC数据库文件。

和静态部件一样,应用程序动态部件的寄存方位一样能够是决议应用程序整体功用的首要因素。

例如,假定把应用程序的数据文件放置在网络效劳器上,而且应用程序有必要在没有索引的表中查找一个记载。

在这种状况下,MicrosoftJet有必要对整个表进行次序扫描以查找匹配成果,这意味着有必要把整个表从效劳器传送到引擎的作业站。

当表很大时,这种操作能够需求较长的时刻。

一同,由于用户在履行查找时长时刻地等候呼应,而网络上很多的通讯还会轮番地下降其他用户的速度,所以这个疑问会愈加杂乱。

为了减轻这种状况,能够给应用程序要查找的列增加索引。

可是,增加索引又能够会增加网络通讯量,而且下降了并发和功用。

这即是说,经过网络拜访文件明显比在本地核算机上拜访文件慢,在多用户环境中完结数据库体系实践上是以献身体系功用为价值的。

因而,为了减小网络的通讯量,最好将某些应用程序的部件存储在本地作业站上。

例如,假定应用程序运用一套存储邮政编码或零件编号表,而这些表不常常改动,则能够把它们移到本地作业站上,以避免网络拜访。

  3.MicrosoftJet多用户模型。

MicrosoftJet多用户数据库应用程序由几个重要部件构成。

在每个用户的作业站上都有MicrosoftJet的一个复制在运转,若是运用双数据库办法,则通常静态部件会驻留在每个用户的核算机上,而动态部件会驻留在网络效劳器上。

除此之外,多用户应用程序具有下列文件:

一个作业组信息文件,它能够会集驻留在网络效劳器上,也能够驻留在每个用户作业站上;

每个数据库有一个断定信息文件(.1db),它驻留在与数据库一样的文件夹内。

  1).作业组信息文件作业组信息文件是一个MicrosoftJet数据库,用来存储用户、组和暗码信息以及用户设置的各种选项信息。

在多用户环境中,作业组信息文件的方位是很重要的。

能够把作业组信息文件放在每个本地作业站上,也能够把它放在网络效劳器上。

若是把它存储在本地机上,则有必要在改动安全性设置值时采纳必要的进程对它进行更新。

2).断定信息文件断定信息文件(.1db)用来存储数据库中一切当时断定记载的信息。

在翻开数据库时,若是断定信息文件不存在,则MicrosoftJet数据库引擎会主动树立该文件。

MicrosoftJet为每个以同享办法翻开的MicrosoftJet数据库文件树立一个断定信息文件。

该文件与翻开的相应数据库同名,但文件名后缀为.1db。

例如,与Northwind.mdb相对应的断定信息文件名叫Northwind.1db。

断定信息文件与数据库存储在相伺的文件夹中。

在数据库封闭时,MicrosoftJet会删去.1db文件。

在多用户环境中,则在一切用户都退出应用程序时将其删去。

MicrosoftJet撑持下列文件效劳器和点对点网络:

.MicrosoftWindowsNT和Windows95网络.BanyanVINES5.52.DECnet4.1.LANtastic5.0.NovellNetWare3.x和4.x.OS/2LANManager2.1和2.2

  通常来说点对点网络不能极好的满意多用户数据库体系的需求,大多数应用程序需求运转在有专用的文件效劳器的网络上。

(二)数据拜访操控

在单用户环境中,只需一个用户在拜访数据,因而应用程序不会发作资源恳求抵触。

而在多用户环境中,当用户拜访数据时,能够会发作抵触。

为了办理这些抵触,MicrosoftJet供给了数据拜访操控和应用程序的断定效劳,以保证在给定的时刻内只需一个用户能够拜访数据。

数据拜访操控用来对数据库的有些或悉数进行拜访约束,通常可分为两类,一类是用户约束,另一类是功用约束。

用户约束用来阻碍某些人(或只答应某些人)查看或修正“灵敏”数据。

例如,在薪酬体系中,大多数人能够查看员工的薪酬,但只需少量人才有权修正实践的薪酬信息。

功用约束只对程序的某个有些起作用,而不论用户是谁。

例如,在订单挂号体系中,若是把报价表设为只读办法,则可避免用户随意修正某些项目的报价。

在应用程序中,能够经进程序操控或MicrosoftJet数据库引擎操控来处置约束。

其间程序操控能够施加于程序本身,而引擎级操控则约束了任何企图拜访数据库信息的程序。

  1.互斥地运用数据库。

以互斥办法翻开数据库是对数据拜访施加的最大约束,它实践上是以“独占”办法运用数据库。

这种约束能够阻碍任何用户或程序拜访正在运用的数据库中的信息。

由于这种办法的约束太大,因而只用于那些影响整个数据库的操作,包含:

·

紧缩数据库。

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

经过增加表、字段或许索引来修正数据库的布局。

处置特别的用户需求(例如传送审计信息)。

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

DimoldDbAsDatabase

DimoldwsAsworkSpace

SetoldDb=oldWs.OpenDatabase("

Members.mdb"

True,False)

  用上面的代码翻开数据库时,若是该数据库未被其它用户运用,则翻开数据库,这样直到封闭之前,该数据库不会被其它用户或程序拜访;

若是数据库正在被其它用户运用,则回来一个过错。

  2.回绝其它用户或程序拜访指定的表。

以独占办法翻开数据库后,能够回绝其它用户或程序拜访整个数据库(包含数据库中的每个表)。

而对数据拜访的一种较轻的约束则是回绝其它用户或程序拜访由自己程序正在运用的表(即记载集),它实践上是对记载集进行断定。

断定记载集的操作经过OpenRecordset办法中的Options参数来完结。

咱们晓得,OpenRecordset办法的格局如下:

目标.OpenRecordset(type,OPtlons,lockedits)

  其间的options参数用来设置对记载集的断定,该参数能够取多种值,以下两种值用来制止其它用户对记载集进行读写操作:

1..制止读(dbDenyRead)

  OpenRecordset办法中的dbDenyRead常量用来制止其它用户查看表中的数据,直到封闭该表停止。

当需求更新整个表中的信息时,能够运用这个常量。

例如:

DimrstasRecordset

Setrst=dbs.OpenRecordset(strTable,_

dbOpenTable,dbDenyRead)

2.制止写(dbDenywrite)

  OpenRecordset办法中的dbDenyWrite常量用来制止其它用户更新表中的数据,直到封闭该表停止。

在这种状况下,其它用户能够查看表中的信息,也能够增加新记载,但不能对其进行修正。

当需求向表中刺进新记载而又不想修正现有的记载时,能够运用这个常量,它对表和动态集都有用。

Setrst=dbs.OPenRecordset(strTable,_

dbOpenTable,dbDenyWrite)

  用dbDenyRead和dbDenyWrite能够别离制止对记载集进行读和写,若是既想制止读,又想制止写,则可一同运用这两个常量(用“十”号衔接)。

dbOpenTable,dbDenyRead+dbDenyWrite)

(三)同享数据的断定

 前一节介绍了对数据拜访的一些约束,其间讲到了对表的断定。

这一节将进一步地谈一谈怎么完结同享数据的断定操作。

要维护同享数据,能够在用户修正数据时断定它。

数据被断定后,任何用户都能够读取它,但仅有一个用户能够修正它。

MicrosoftJet能够在以下三种不一样的等级上断定数据:

独占办法:

阻碍其他一切用户拜访数据库,这是约束最大的办法,上一节已介绍过。

记载集断定:

即断定Recordset目标的根本表,用读表断定、写表断定或两者都用。

页面断定:

断定富含正在修正的数据的页面,其长度为2048个字节(2K)。

这是约束最小的办法。

  在应用程序顶用哪一种办法来断定目标,首要看所需求的并发等级。

例如,若是想使目标在任何时候都可用,则可运用页面断定,由于它是约束最小的等级。

若是应用程序要保证数据库中的大多数或一切数据都可拜访,则应挑选独占办法,这种办法保证应用程序独占数据库的拜访。

注意,这三种等级能够联系运用。

例如,假定有一个订单体系,则能够用页面断定来操控订单表的断定,使订单接收者之间的并发程度最高。

在一天结束时用记载集断定来断定汇总表,这个汇总表要用汇总数据来更新。

最终,能够在夜间运用独占办法来收拾数据库。

  1.同享办法与独占办法

  如前所述,独占办法是翻开数据库约束最大的办法,它阻碍其他一切用户翻开该数据库。

这种办法常用于数据库办理或数据库的批量修正,例如修正或收拾操作以及改动数据库的布局等。

在单用户环境中拜访数据库时,通常以独占办法翻开数据库,这能够供给非常好的功用,由于MicrosoftJet不用对目标进行断定和解锁,也不用改写高速缓存器。

可是,当在多用户环境中运用应用程序时,通常以同享办法翻开数据库。

  

(1).以同享办法翻开数据库

  为了完结记载集断定,有必要以同享办法翻开数据库。

当以同享办法翻开数据库时,能够会有多个用户一同对数据库进行拜访,在这种状况下,MicrosoftJet将处置各用户间企图修正一样记载的抵触。

前一节中讲过,当用OpenDatabase办法翻开数据库时,只需把Options参数的值设置为False,就能以同享办法翻开数据库。

下面举一个比如。

  编写一个Function进程,调用该进程,能够依据需求用同享办法或独占办法翻开数据库。

进程如下:

FunctionOPenDatabaseX(dbsAsDatabase,strDBPathAs_

String,blnExclusiveAsBoolean)AsInteger’封闭过错捕获

OnErrorResumeNext’翻开strDBPath所指定的数据库。

若是blnExclusive为True,则以独占办法翻开数据库:

不然,以同享办法翻开数据库

Setdbs=OpenDatabase(strDBPath,blnExclusiVe)

SelectCaseErr

CaSe0:

OPenDatabaseX=0

Case3033:

OpenDatabaseX=3033

Case3343:

OpenDatabaseX=3343

Case3044:

OpenDatabaseX=3044

Case3024:

OpenDatabaseX=3024

CaseElse:

OpenDatabaseX=-l

EndSelect

EndFunCtion

  该进程以同享办法或独占办法翻开一个数据库,由参数blnExclusive决议。

若是blnExclusive参数为True,则数据库以独占办法翻开;

不然,数据库以同享办法翻开。

在该进程中,用过错处置程序来检测过错,并依据进程调用的履行状况回来过错代码。

该进程有3个参数,别离为数据库目标变量名、数据库名(包含途径)和办法开关。

为了调用这个进程,应先用Dim句子声明一个Database目标变量,然后把这个目标变量和数据库的名字(strDBPath)一同传送给OpenDatabaseX进程。

在调用OpenDatabaseX的代码时,应当查看OpenDatabaseX的回来值,看是不是有过错发作,然后依据发作的过错采纳相应的办法。

在窗体上画一个指令按钮,然后鄙人面的事情进程中调用进程OpenDatabaseX:

PnvateSubCommandl_Click()

DimaAsInteger

DimMvDbsAsDatabase

a=OpenDatabaseX(MyDbs,"

c:

\Vb50\biblio.mdb"

,False)

SelectCasea

Case0:

MsgBox"

调用成功"

MsgBoxError(3033)

MsgBOxError(3343)

MsgBoxEnor(3044)

MsgBoxError(3024)

MSgBoxError(3024)EndSeleCt

EndSub

  OPenDatabaseX进程的回来值是一个整型数,它是调用时发作的过错代码。

当回来值为0时,表明调用成功,显现一个信息框。

上述事情进程以同享办法翻开一个数据库,若是把OpenDatabaseX的第三个参数改为True,则以独占办法翻开该数据库。

若是在调用时犯错,则将回来过错代码,在事情进程顶用Error函数显现相应的信息。

例如,假定把数据库名改为:

e:

\vb50\biblio.mdb。

则由于该数据库的途径不对而犯错,发作犯错信息。

  

(2).运用只读办法

  只读办法是同享办法的特别办法。

当以只读办法翻开一个数据库时,不能改动数据库的数据或目标。

可是,其他用户能够改动数据,不要把这种办法与在操作体系级以只读办法翻开文件相混杂。

下面的代码以独占的只读办法翻开一个数据库:

SetdbsOrdEntry=OpenDatabase("

OrdEntry.mdb"

,True,True)

若是以同享的只读办法翻开一个数据库,则应运用下面的代码:

,False,True)

  注意,以只读办法翻开数据库时,并不制止同享表类型的断定或读断定;

因而,以只读办法翻开数据库不能避免断定抵触的发作。

约束程序为只读办法的另一种办法是为记载集运用快照,快照类型的记载集总是只读的。

当基表中的数据不需求常常修正时,能够运用快照。

由于快照寄存在内存中,因而其操作比运用表或动态集的一样操作速度要快。

可是,由于快照的内存需求和装入内存时要花费必定的时刻,最好把快照用于回来记载在200以内的查询中。

(四)记载集断定

用记载集断定能够断定Recordset目标根本表,也能够指定只读或(和)只写拜访。

记载集断定只能应用于表类型和动态集类型的Recordset目标,页面断定(见下一节)不能应用于快照类型和仅向前类型的Recordset目标,由于它们正本即是只读目标。

尽管如此,MicrosoftJet仍供给了同享表读断定和同享表写断定。

  

(1).翻开记载集。

以同享办法翻开数据库之后,能够经过在OpenRecordset办法的oPtions参数中指定不一样的选项来完结记载集断定。

为了用断定翻开一个记载集,可按如下进程操作:

1.)以同享办法翻开Recordset目标的数据库。

2.)用OpenRecordset办法翻开记载集,并把Options参数设置为所需求的断定办法。

3.)当Recordset目标的运用结束时,封闭该目标以开释一切记载集级的断定。

编写一个Function进程,以独占办法翻开一个表。

FunctionOpenTableExclusive(dbsAsDatabase,rstAsRecordset,strTableAsString)AsInteger

Setrst=dbs.OpenRecordset(strTable,dbOpenTable,dbDenyRead+dbDenyWrite)

CaSe0:

OpenTableExclusive=0

CaSeElse:

OpenTableExclusive=-1

Err=0

EndFunction

该进程经过dbDenyWrite和dbDenyRead选项常数的组合,以独占办法翻开一个表。

若是进程调用成功(回来0),则在Recordset变量被显式或隐式地封闭之前,其它用户将不能拜访该表。

若是其它用户现已以独占办法翻开该表,或许发作了一个非预期的过错,则该进程回来-1。

为了调用上述进程,能够在窗体上画一个指令按钮,然后编写如下的事情进程:

PrivateSubCommand1_Click()DimaAsIntegerDimMvDbsAsDatabase

DimMvTabsAsRecordset

SetMyDbs=OpenDatabase("

C:

\dbdir\dbl.mdb,true)

a=OpenTableExclusive(MyDbs,MyTabs,"

Tabel1"

Case0:

调用犯错"

注意,若是翻开一个Recordset目标时没有指定option:

参数值,则MicrosoftJet将运用页面断定。

在这种状况下,将以同享办法翻开记载集,而且不制止其他用户拜访记载会集的数据,但它的确断定了当时页中正在修正的数据。

(2).在翻开记载集时查看过错。

和以独占办法翻开数据库一样,当对Recordset目标设置确守时,若是断定失利,则会发作过错。

若是某个用户以制止其它用户取得断定的办法翻开了一个Recordset目标,则当企图断定该Recordset目标时将会发作最常见的过错,即3262,其犯错信息为:

“不能断定表XXX;

当时正被用户XXX在机器XXX上运用。

”。

当企图对不能断定的目标运用OpenRecordset办法时,也会发作这个过错。

(五)页面断定

从抱负的视点来说,若是能对记载进行断定,则会给多用户程序带来极大的灵活性。

可是惋惜的是,MicrosoftJet引擎不撑持真实的记载断定,而是运用页面断定。

页面断定只断定包含当时正在修正的记载的页,MicrosoftJet进行拜访和断定的页的巨细为2K(2048个字节)。

在运用页面确守时,其他用户能够读取断定页中的数据,但不能对数据进行修正。

在这种断定计划中,每次将断定多个记载,断定的记载的个数取决于每个记载的巨细。

例如,若是每个记载的长度为230个字节,则每次只能断定9个记载;

而若是记载的长度为30个字节,则每次可断定68个记载。

断定办法。

页面断定分为两种办法,即保存式断定和开放式断定,它断定了MicrosoftJet怎么对数据进行断定。

当编写在页面等级上断定数据的应用程序时,有必要断定要运用哪种断定办法。

页面断定能够经过两种办法来设置,即LockEdits特点和OpenRecordset办法中的lockedit5参数。

1.用LockEdits特点指定断定办法。

断定办法能够经过LockEdits特点来指定。

该特点可用于各种Recordset目标,包含动态集、快照、表及动态类型的Recordset目标。

LockEdits特点是一个布尔值,当把该值设置为True(缺省)时,将对记载集进行保存式断定,即在履行Edit办法时断定2K的页面:

若是把该特点设置为False,则对记载集进行开放式断定,即在履行UPdate之前不断定要更新的记载地点的2K页面。

如下面的比如:

DimrstTemPAsReCordset

……

rstTemp.LockEdits=True

阐明:

a.断定页面后,其它用户不能对正在修正的记载地点页面进行修正,但能够读取断定页中的数据。

在其它用户断定页面后,若是再把LockEdits特点设置为True,则会犯错。

b.若是把LockEdits特点设置为False,且其它用户已断定页面,则这以后的用户在运用Update时将会犯错。

c.当与Microsoft衔接的ODBC数据源一同操作时,LockEdits特点被设置为False,即开放式断定。

2.用OpenRecordset办法指定断定办法。

咱们已屡次运用过OpenRecordset办法,该办法的格局如下:

Setrecordset=object.OpenRecordset(type,options,lockedits)

其间第三个参数,即lockedits,用来指定断定办法或以只读办法翻开记载集。

该参数能够取以下5种值:

(1)dbReadOnly:

以只读办法翻开记载集。

注意,在options参数中也能够运用dbReadOnly,但不能一同运用,不然会发作过错。

(2)dbPessimistic:

用保存式断定办法翻开记载集,一旦运用Edit办法,将当即断定正在修正的记载地点的页面,直到履行Update办法后

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2