电竞比分网-中国电竞赛事及体育赛事平台

分享

修復(fù)損壞的VFP dbf數(shù)據(jù)庫 -

 悟靜 2009-06-21
---目前在我國,有相當(dāng)一部分正在運(yùn)行應(yīng)用程序是用Foxpro 編寫的,由于突然斷電、程序非法關(guān)閉等原因,經(jīng)常會導(dǎo)致Foxpro數(shù)據(jù)庫.DBF文件被破壞,如果數(shù)據(jù)庫被破壞了,用Foxpro打開數(shù)據(jù)庫.DBF時(shí),會出現(xiàn)"notatable/dbf"錯(cuò)誤提示,導(dǎo)致無法用Foxpro打開。
----首先介紹一下Foxpro數(shù)據(jù)庫.DBF的文件結(jié)構(gòu):
----Foxpro數(shù)據(jù)庫*.DBF的文件結(jié)構(gòu)由頭記錄和數(shù)據(jù)記錄組成,頭記錄定義該DBF的結(jié)構(gòu)并包含與該庫相關(guān)的其它信息。頭記錄由文件位置0字節(jié)開始。
----數(shù)據(jù)庫頭部幾個(gè)關(guān)鍵字節(jié)含義如下:(注:庫文件中存儲整數(shù)時(shí)低位字節(jié)在前)
----字節(jié)偏移說明
----0 庫文件的版本類型
----1-3 最近更新的日期(YYMMDD)
----4-7 庫文件中記錄的個(gè)數(shù)
----8-9 第一條記錄的起始位置
----10-11 一條記錄的長度(包括刪除標(biāo)記)
----其它字節(jié)的具體描述不在此贅述,可以參考有關(guān)部門書籍或者程序開頭注釋部分。
----在實(shí)際工作中發(fā)現(xiàn),許多情況下數(shù)據(jù)庫錯(cuò)誤都是由于記錄個(gè)數(shù)比實(shí)際記錄個(gè)數(shù)大1個(gè),以至于數(shù)據(jù)庫無法用打開。
----主要通過以下兩種辦法來對數(shù)據(jù)庫進(jìn)行修復(fù)。
----一、用Pctools、NU的Diskedit等工具軟件進(jìn)行恢復(fù):
----運(yùn)行Pctools,選中無法打開的數(shù)據(jù)庫,按E文件進(jìn)入編輯功能,按F1切換顯示模式。
----按F3進(jìn)行編輯,將開始的第5個(gè)字節(jié)值減1,按F5存儲,然后退出Pctools,啟動(dòng)Foxpro, 發(fā)現(xiàn)被破壞的數(shù)據(jù)庫可以打開使用了。
----由于許多操作者并不一定熟悉如何使用Pctools,因此我建議大家可以用比較熟悉的Excel程序根據(jù)下面的步驟來進(jìn)行數(shù)據(jù)庫的恢復(fù)。
----二、用Excel進(jìn)行恢復(fù)。
----啟動(dòng)Excel,選擇"打開"按鈕,出現(xiàn)打開對話框,在打開文件類型中選擇Dbase/Foxpro(*.DBF)文件類型,再選中被破壞的數(shù)據(jù)庫打開,這時(shí)不要做更改,只選擇"保存"按鈕,會出現(xiàn)"另存為"對話框,仍選擇以原來文件名保存,會提示"文件已經(jīng)存在,是否替換已有文件?",選擇"是"。 工作幫手網(wǎng) www.
----然后選擇"文件"菜單上的"關(guān)閉",會出現(xiàn)提示"數(shù)據(jù)庫文件不是Excel格式,要保留修改嗎?
----要保存為Excel格式,單擊'是',然后在'保存類型'下拉列表框選'Excel工作簿';
----要用現(xiàn)有格式保存并替換原來的文件,單擊'是',然后單擊'保存';
----要在關(guān)閉文件時(shí)維持現(xiàn)有格式并不作保存,單擊'否'。"
----由于我們并沒有對數(shù)據(jù)庫的記錄進(jìn)行改動(dòng),只是為了恢復(fù)數(shù)據(jù)庫,所以選擇最后一項(xiàng)"在關(guān)閉文件時(shí)維持現(xiàn)有格式并不作保存",因此單擊"否",退出Excel。
----啟動(dòng)Foxpro,再次打開數(shù)據(jù)庫文件,發(fā)現(xiàn)數(shù)據(jù)庫文件已可以被打開了,但是觀察數(shù)據(jù)庫的結(jié)構(gòu),會發(fā)現(xiàn)數(shù)據(jù)庫結(jié)構(gòu)中的索引不見了,不過數(shù)據(jù)庫的索引文件還存在。我們只需要給數(shù)據(jù)庫Add索引,并選擇原來的索引文件Open即可。
----添加索引文件后退出數(shù)據(jù)庫結(jié)構(gòu)設(shè)置,并對數(shù)據(jù)庫重新索引一下,就可以繼續(xù)使用原 來被破壞的數(shù)據(jù)庫了。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多