何彤 何凱
摘 要:在VF環(huán)境下開發(fā)的數(shù)據(jù)庫系統(tǒng),Vf數(shù)據(jù)庫在網(wǎng)上由多用戶同時(shí)使用時(shí),為防止多用戶同時(shí)修改數(shù)據(jù)引起錯(cuò)誤,vf提供了多用戶數(shù)據(jù)庫訪問技術(shù)。
關(guān)鍵詞:數(shù)據(jù)庫系統(tǒng) ;人工鎖定;數(shù)據(jù)緩沖
VF數(shù)據(jù)庫是國家計(jì)算機(jī)等級考試的一個(gè)組成部分,具有著強(qiáng)大的數(shù)據(jù)和信息管理功能,在實(shí)際工作中有廣泛的用途。 VF數(shù)據(jù)庫既包含對數(shù)據(jù)庫的管理和應(yīng)用,還包含對數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)和開發(fā),如何提高學(xué)生VF數(shù)據(jù)庫技術(shù)應(yīng)用能力,為學(xué)生提供一個(gè)動(dòng)態(tài)的、多元化的學(xué)習(xí)環(huán)境,培養(yǎng)高技能人才,是我們教學(xué)中工作重點(diǎn)。為促使學(xué)生更積極的去獲取數(shù)據(jù)庫專業(yè)知識,拓展數(shù)理邏輯與創(chuàng)新思維,我們在教學(xué)中對VF數(shù)據(jù)庫進(jìn)行了一點(diǎn)探索。
對共享庫中的表,可能會(huì)有多個(gè)用戶同時(shí)去修改,而引起表中的數(shù)據(jù)出錯(cuò),為此對并行訪問必須施加某些限制,使同一時(shí)刻只能由一個(gè)用戶對記錄或表進(jìn)行修改,VF中用加鎖的方式避免了多用戶修改表時(shí)數(shù)據(jù)錯(cuò)誤的產(chǎn)生.對表的加鎖范圍分為①鎖定表,②鎖定表頭,③鎖定記錄.加鎖的用戶對鎖定的對象有讀和修改以及再次加鎖的權(quán)限,而網(wǎng)絡(luò)上的其他用戶對鎖定的對象只有讀的權(quán)限。 下面介紹VF中加鎖的3種方式:
1 人工鎖定
人工鎖定是指在修改表或記錄的命令前,用專門的鎖定函數(shù)來鎖定表或記錄,修改命令執(zhí)行后,應(yīng)該立即對表或記錄解鎖。
1.1 鎖定函數(shù) FLOCK(“表別名”)&&鎖定表
LOCK(“0”,“表別名”)&&鎖定表頭
LOCK(“記錄號1,記錄號2,…”,“表別名”) &&鎖定單個(gè)或多個(gè)記錄
鎖定成功函數(shù)返回T值。
1.2 解鎖命令
UNLOCK&&解鎖當(dāng)前工作區(qū)內(nèi)所有鎖定的記錄或表頭或表
UNLOCKRECORD記錄號IN表別名 &&解鎖單個(gè)記錄,當(dāng)記錄號為0時(shí)解鎖表頭
UNLOCKALL&&解鎖所有工作區(qū)中所有鎖定的記錄或表頭或表
1.3 鎖定不成功的情況
①當(dāng)表已被其他用戶鎖定時(shí),再做表或表頭或任何記錄的鎖定.②當(dāng)表中已有記錄或表頭被其他用戶鎖定時(shí),再做該記錄或表頭或表的鎖定。
1.4 鎖定多個(gè)記錄的條件
設(shè)置setmulitlocks on。當(dāng)設(shè)置setmulitloeks off時(shí)可以鎖定表,鎖定表頭,鎖定表中的單個(gè)記錄。執(zhí)行完自動(dòng)解鎖。
1.5 立即解鎖
當(dāng)加鎖的用戶對表或記錄做完修改之后,應(yīng)立即解鎖,否則其他用戶不能對鎖定的表或記錄做修改。
2 自動(dòng)鎖定
自動(dòng)鎖定是指VF中有一些對表和記錄的修改命令本身有加鎖功能,修改表或記錄的命令執(zhí)行時(shí)首先做鎖定,命令不同加鎖的范圍不同。命令執(zhí)行完自動(dòng)解鎖。
3 緩沖技術(shù)
VF的緩沖技術(shù)啟用后,程序中執(zhí)行到對記錄或表做修改的命令時(shí),會(huì)自動(dòng)將要修改的記錄從磁盤送入緩沖區(qū),然后對緩沖區(qū)的記錄或表做修改,之后再將緩沖區(qū)的內(nèi)容寫回磁盤的原表中。
3.1 緩沖的好處
①在緩沖區(qū)中修改的內(nèi)容不想保存時(shí),在更新原表之前,可以將緩沖區(qū)中的修改撤消。②使用開放式緩沖時(shí),在緩沖區(qū)中做修改的同時(shí),不影響其他用戶對記錄或表的任何操作.
4 啟用緩沖
對庫中表或記錄使用緩沖技術(shù)首先要給表的buffering屬性設(shè)置值。函數(shù)cursorsetprop()用來設(shè)置表的屬性,下面是buffering屬性的設(shè)置方法。
cursorsetprop(“buffeting”,緩沖值,“表名”)
當(dāng)緩沖值為1時(shí)廢止緩沖,這是表bufering屬性的默認(rèn)值;當(dāng)緩沖值為2或3時(shí),啟用保守式或開放式記錄緩沖;當(dāng)緩沖值為4或5時(shí),啟用保守式或開放式表緩沖。一旦啟用緩沖后,在關(guān)閉表或廢止緩沖之前一直保持有效,當(dāng)緩沖值重置為1即廢止緩沖在VF環(huán)境下開發(fā)的數(shù)據(jù)庫系統(tǒng),由于存儲(chǔ)數(shù)據(jù)的DBF文件采用的是ASCII明文存儲(chǔ),非法用戶可使用WINHEX、UltreaEdit來打開數(shù)據(jù)庫文件。因此,為了安全,必須對數(shù)據(jù)的載體DBF文件進(jìn)行加密保護(hù),主要的目的還是把ASCII碼的信息變成不可直接閱讀的數(shù)據(jù)。
從關(guān)系型數(shù)據(jù)庫的表、字段、行和數(shù)據(jù)元素等方面出發(fā),形成庫內(nèi)加密的思想。(1)以表為單位:對于文件型數(shù)據(jù)庫來說,一個(gè)文件只有一張表,因而對表的加密可以說是對文件的加密了。(2)以記錄或字段為單位加密:通常情況下,我們訪問數(shù)據(jù)庫時(shí)都是以二維表方式進(jìn)行的,如果以記錄為單位進(jìn)行加密,每讀寫一條記錄需進(jìn)行一次加解密的操作,對于不需要訪問到的記錄,不需要進(jìn)行任何操作。一個(gè)記錄都必須有一個(gè)密鑰與之匹配,在各自密鑰的作用下,將數(shù)據(jù)庫的每一個(gè)記錄加密成密碼文并存放于數(shù)據(jù)庫文件中;記錄的查找是則通過將需查找的值加密成密碼文后進(jìn)行。(3)以數(shù)據(jù)元素為單位加密:用asc(),chr()等函數(shù)對字段內(nèi)容做轉(zhuǎn)換;用低級文件函數(shù)對庫文件進(jìn)行轉(zhuǎn)換;不用庫形式,而用文本文件形式記錄信息.并用低級文件函數(shù)進(jìn)行加密。加密形式可做許多復(fù)雜的變化,可考慮密碼加密參照用戶名,使同一密碼不同用戶密文也不同??傊?dāng)?shù)據(jù)庫加密技術(shù)的應(yīng)用極大的解決了數(shù)據(jù)庫中數(shù)據(jù)的安全問題,當(dāng)然加密實(shí)現(xiàn)的方法各有不同,也都有優(yōu)劣之處,相信隨著數(shù)據(jù)庫加密技術(shù)的發(fā)展,數(shù)據(jù)庫的使用會(huì)變得越來越安全,越來越快捷。
參考文獻(xiàn)
[1] 曾 剛,楊奔.VaualForpro開發(fā)人員指南[M].北京:希望電子出版社,2002.10.
[2] 郭興成.VsualForpro7.0開發(fā)實(shí)作教程[M].北京: 希望電子出版社.2002.11.