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