许可证和源代码.DOC

许可证和源代码

HYPERLINK /KB/database/MFCNETMdbTools/MdbTools_SourceCode.zip 下载源文件 (.NET, MFC,WIN32 ) 1.5 MB HYPERLINK /KB/database/MFCNETMdbTools/MdbTools_ReleaseNET_MFC.zip 下载 Exes (.NET, 和示例数据库 950 。 介绍 我曾经遇到一些访问 97数据库的问题。 我也有instalation发动机的问题。 我找到 MdbTools,可以修复数据库或者至少获取数据。 然后我将MdbTools移植到MFC和. NET ( 。只读取,不写入支持) 。 我将源更新到最新版本的mdbtools 。 MsAccess文件结构 页面 mdb文件的所有信息都按页面组织。 页面是 2k ( Jet3 ) 和 4k ( Jet4 ) 文件中的一个区域。 MsAccess数据库的文件len是 2,048 ( Jet3 ) 或者 4,096 ( Jet4 )的倍数。 例如 Nwind.mdb 文件示例包含 1,548,288/2048 = 页。 所有页面都存储为 secuentially,并且它们都是相同大小的,页面n 从文件( 考虑从 0开始)的n * 4 + 1或者n * 4096 + 1开始。 例如对于包含 5页( 包括 0,即数据库定义页)的Jet3数据库,请执行以下操作: 位置与Jet3不同,因此所有表都将被引用为。 页号 从位置( dec ) 开始 磅( dec ) 0 0 2048 1 2048 2048 2 4096 2048 3 6144 2048 4 8192 2048 页面 0 - 数据库定义页 这里页面的信息不多。 已知的内容: 从( 十六进制) 收费 至( 十六进制) ( dec ) 格式 描述 0x0 0x0 1 字节 页类型- 数据库定义页类型为 0 0x1 0x13 19 未知 0x14 0x17 4 镜头 数据库版本( 0 代表 Jet3,1代表 Jet4,2代表 Jet5,3代表访问,表示访问 2010 0x18 0x3D 38 未知 0x3E 0x41 4 镜头 RC4密钥用于加密页面( 如果数据库被加密) 0x42 0x50 14 字节 密码( 掩码) 0x51 0x7FF 1967 未知 : 指小的前端 Int,表示该数字是从最低有效位存储到最有效位( lsb msb ) 。 例如数字 0 xA1B2C3D4存储为: D4 C3 B2 A1. 每个页面的第一个字节标识页面类型: 0x00数据库定义页。( 始终页 0 ) 0x01数据页 0x02表定义 0x03中间索引页 0x04叶索引页 0x05页使用位图( 扩展页面使用情况) 页 1 跟踪数据库中已经分配的页。 Page 2 - MSysObjects的表定义页 MsAccess数据库包含包含数据库本身信息的系统表。 它们都以前缀 MSYS 开头。 页 2包含表MSysObjects的表定义( 页面类型 0 x02 ) 。 这里表格包含所有对象的名称和( 更重要),它们的页码位置。 表定义页的结构为: 从( 十六进制) 收费 至( 十六进制) ( dec ) 格式 描述 0x0 0x0 1 字节 页类型- 表定义页类型为 2 0x1 0x7 8 未知 0x8 0x9 2 镜头 页 len 0xC 0xF 4 镜头 行数 0x17 0x18 2 镜头 可变列的数目 0x19 0x1A 2 镜头 列数 0x1B 0x1E 4 镜头 索引数 0x1F 0x22 4 镜头 索引项的数目 0x23 0x26 4 页面使用掩码 0x27 0x2A 4 镜头 具有可用空间位掩码的页面 列定义从 0 x2B + ( 索引项的数目 * 8 ) 开始。 列属性先进行。然后转到列名称( 与属性的顺序相同) 。 列属性的大小固定为 18字节。 假定索引项的数目= 2 ( 用于 MSysObjects ),列属性以 0 x3B开始。 以前检索了列数,因此你必须读取 18 * numcols字节。 从( 十六进制) 收费 至( 十六进制) ( dec ) 格式 描述 0x3B 0x3B 1 字节 栏类型 0x3C 0x3C 1 字节 列号 0x3D 0x3E 2 镜头 变量 col 0x3F 0x40 2 镜头 行编号 0x41 0x45 5 未知 0x46 0x46 1 字节 精密 0x47 0x47 1 字节 刻度 0x48 0x48 1 字节 标志,包括 isFixed,长 autonumeric,uuid自动 0x49 0x4A 2 镜头 列固定偏移 0x4B 0x4C 2 镜头 列大

文档评论(0)

1亿VIP精品文档

相关文档