網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)文章

字號(hào):

一、主要問(wèn)題
    對(duì)于簡(jiǎn)單的局域網(wǎng)環(huán)境下開(kāi)發(fā)VFP程序,主要須注意的是數(shù)據(jù)共享沖突的問(wèn)題。
    二、解決辦法
    在明確網(wǎng)絡(luò)設(shè)計(jì)的重點(diǎn)——如何解決兩個(gè)或兩個(gè)以上用戶(hù)同時(shí)修改數(shù)據(jù)時(shí)所產(chǎn)生的沖突——后,我們來(lái)討論解決這個(gè)問(wèn)題的方法。
    基本方法有三種:
    1、對(duì)數(shù)據(jù)獨(dú)占訪(fǎng)問(wèn);
    2、對(duì)數(shù)據(jù)共享訪(fǎng)問(wèn);
    3、緩沖數(shù)據(jù)訪(fǎng)問(wèn);
    其中1,2兩點(diǎn)在莊稼的中級(jí)教程第十三課網(wǎng)絡(luò)程序設(shè)計(jì)初步中有這方面的介紹,為了方便大家整體閱讀,我在這里再多羅嗦兩句。
    1)獨(dú)占方式
    以獨(dú)占方式打開(kāi)的表,其他用戶(hù)不能對(duì)該文件讀寫(xiě)。
    代碼:
    set exclusive on 或 use XXX exclusive
    use XXX
    只能在獨(dú)占方式下執(zhí)行的命令有index,reindex,pack,zap,alter table,insert,
    modi stru等
    2)共享方式
    以共享方式打開(kāi)的表,多用戶(hù)可同時(shí)訪(fǎng)問(wèn)它。
    代碼:
    set exclusive off 或 use XXX shared
    use XXX
    對(duì)于共享的數(shù)據(jù)表,在對(duì)其進(jìn)行添加或更新時(shí),就涉及到鎖定與解鎖的問(wèn)題。
    [2-1]鎖定數(shù)據(jù)
    鎖定數(shù)據(jù)一般有自動(dòng)鎖定和人工鎖定兩種。
    自動(dòng)鎖定就是一些vfp命令在執(zhí)行之前都會(huì)自動(dòng)鎖定一個(gè)記錄或一個(gè)表,如果成功鎖定后才繼續(xù)執(zhí)行該命令,執(zhí)行完后解鎖。(vfp命令的自動(dòng)鎖定范圍可參見(jiàn)相關(guān)書(shū)籍)
    人工鎖定是通過(guò)使用鎖定函數(shù)人工鎖定一個(gè)記錄或一個(gè)表??赡苡玫降暮瘮?shù)有:
    Rlock() 鎖定記錄(rlock()等同于lock())
    Flock() 鎖定表
    set reprocess to [嘗試加鎖次數(shù)]
    set multilock on 鎖定多條記錄的系統(tǒng)設(shè)置
    ISRlocked()/Isflocked() 測(cè)試該記錄是否被鎖定
    代碼:
    set exclusive off &&共享方式
    set reprocess to 1 &&加鎖
    use XXX &&打開(kāi)共享表
    IF Flock() &&鎖定表并判斷是否成功
    &&如果不想鎖記錄,只想測(cè)試記錄是否加鎖,則使用isrlocked()
    replace all XX with XX &&鎖定成功執(zhí)行替換
    unlock &&解鎖
    else
    wait window "File in use by another user." nowait
    endif
    [2-2]數(shù)據(jù)解鎖
    數(shù)據(jù)解鎖相對(duì)于加鎖亦有兩種解鎖方式。
    對(duì)于自動(dòng)加鎖的記錄,只需移動(dòng)記錄指針就能解鎖。
    對(duì)于人工加鎖的記錄,必須使用下面的解鎖命令:
    unlock,unlock all
    end transaction,tableupdate()
    另外在使用set multilocks off或flock()命令建立新的鎖定前,自動(dòng)解除當(dāng)前鎖定還有比較徹底的命令:clear all,close all,quit.怎么樣?徹底吧?。海?BR>    [2-3]我還想說(shuō)的一點(diǎn)
    設(shè)計(jì)表單時(shí),使用私有數(shù)據(jù)工作期,原因很長(zhǎng),就不說(shuō)了。
    3)緩沖方式
    緩沖方式包括兩種手段:共享數(shù)據(jù)使用緩沖及事務(wù)處理的概念.