|
*.db是paradox格式的文件!!Paradox数据库是一种桌面型数据库,具有有效性检查、参考完整性、口令保护、字段类型丰富等特点。
在access中完全可以导入和导出!
access2000支持paradox4.0和paradox5.0
从Delphi 4版本开始, Paradox数据库从Paradox 5升级为Paradox 7
请自行下载Paradox数据库,就可以使用这种文件了!!
速达2000+pro3.0速达2000+系列可以浏览察看修改和升级为7.0
用Delphi程序可以维护!
如果你的表数据库文件损坏:请使用下面的程序恢复!
下面给出用C++ Builder编程来修改表头索引和数据块链表的主要源代码。需要注意的是,该方法不适用于有密码的数据表。
用C++ Builder 新建一个工程,在窗体上创建一个OpenDialog1组件和一个Button1组件,并将OpenDialog1的Filter属性设置为“*.DB|*.DB”,然后在Button1的OnClick事件中加入以下代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
//变量声明
AnsiString fn;
unsigned char fd[65];
int rl,lhb,dbs,nr,tb;//rl为记录长度,lhb为表头块长度,dbs为数据块大小,nr为记录数,tb为总的数据块数
unsigned long sof;
struct stat statbuf;
fstream DBFile;
//获取待修改数据表名
fn=OpenDialog1->FileName;
//获得文件大小,以此计算数据表中最大的块数
int handle;
handle=open(fn.c_str(),O_RDONLY);
fstat(handle, &statbuf);
sof=statbuf.st_size;
close(handle);
//打开文件并将表头信息读取到数组fd中
DBFile.open(fn.c_str(),ios::in|ios:ut|ios::binary);
DBFile.read(fd,64);
//计算总的块数
dbs=fd[5]*1024;
lhb=fd[2]+fd[3]*256;
tb=ceil((sof-lhb)/dbs);
//根据总块数计算总的记录数
rl=fd[0]+fd[1]*256;
nr=dbs/rl;
nr=nr*tb;
//修改总的记录数
fd[6]=nr%256;
fd[7]=nr/256;
fd[8]=nr/(256*256);
fd[9]=nr/(256*256*256);
//修改数据块数
fd[10]=fd[12]=fd[16]=fd[58]=tb%256;
fd[11]=fd[13]=fd[17]=fd[59]=tb/256;
fd[14]=1;
fd[15]=0;
//将相关信息写到文件中
DBFile.seekg(0,0);
DBFile.write(fd,64);
//根据表头信息修复数据块链表
if(tb>1)
for(int i=0;i<tb;i++)
{
if(i==0) {fd[0]=2;fd[1]=0;fd[2]=0;fd[3]=0;}
else if(i==tb-1) {fd[0]=0;fd[1]=0;fd[2]=i%256;fd[3]=i/256;}
else {fd[0]=(i+2)%256;fd[1]=(i+2)/256;fd[2]=i%256;fd[3]=i/256;}
DBFile.seekg(lhb+dbs*i,0);
DBFile.write(fd,4);
}
//关闭文件
DBFile.close();
ShowMessage(“修复操作完成!”);
}
}
AutoSQL可以存取.db文件!!
Import Wizard v6.0.6 可以导入某些资料!!
我知道的就这些!希望对你有帮助!!
谢谢!!
|
|