免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
[轉帖]易語言數據庫文件格式技術資料|易語言俱樂部
易語言數據庫文件格式技術資料:
by - 2006-1-8 22:19:52
易語言數據庫文件格式技術資料:
1、通用宏 //////////////////////////////////////////////////////////////////////////
// 數據庫文件的默認后綴為 .EDB
// 數據庫索引文件的默認后綴為 .ENX
// 數據庫輔助文件(用作存放備注及字節(jié)集類型字段的數據)的默認后綴為 .EDT
#define DE_DATABASE_FILE _T("EDB")
#define DE_INDEX_FILE _T("ENX")
#define DE_DAT_FILE _T("EDT")
// 非加密數據庫的起始標志。
#define DB_BEGIN_MARK 'BDEW'
// 加密數據庫的起始標志。
#define ENCRYPTED_DB_BEGIN_MARK 'BDCW'
// 輔助文件的起始標志。
#define DAT_BEGIN_MARK 'TDEW'
// 索引文件的起始標志
#define INDEX_BEGIN_MARK 'XNEW'
// 數據庫文件的 1.0 版本號
#define DB_VER_01_00 MAKELONG (0, 1)
// 數據庫文件的當前版本號
#define DB_CUR_VER DB_VER_01_00
// 字段名稱的最大長度
#define MAX_FIELD_NAME_LEN 16
// 同一數據庫文件最多可以同時打開索引文件的數目。
#define MAX_OPEN_INDEX_COUNT 10
// 索引文件對應的最多字段的數目。
#define MAX_INDEX_FIELDS_COUNT 8
// 固定長度文本字段的最小寬度。
#define MIN_FIXED_TEXT_FIELD_WIDTH 1
// 固定長度文本字段的最大寬度。
#define MAX_FIXED_TEXT_FIELD_WIDTH 1024
2、.EDB文件格式 ////////////////////////////////////////////////////////////////////
// 數據庫.EDB文件起始信息
struct DB_HEADER
{
// 在加密數據庫中,只有此標記在明文區(qū)中。
DWORD m_dwMark; // 為 DB_BEGIN_MARK 或 ENCRYPTED_DB_BEGIN_MARK
INT m_nVer; // 本數據庫的版本號
DATE m_dtCreated; // 創(chuàng)建日期
// 當前庫中記錄數及當前未用記錄書簽值。
INT m_nRecordsCount, m_nFreeBookmark;
INT m_nRecordSize; // 每一條記錄的數據尺寸。
// 如果為加密數據庫,記錄正確訪問密碼的MD5編碼以供核對。
#define PASSWORD_MD5_BUF_LEN (32 + 4)
char m_szPasswordMD5 [PASSWORD_MD5_BUF_LEN];
// 保留
INT m_nReserved [11];
};
typedef DB_HEADER* PDB_HEADER;
/////////////////////////
// 字段類型宏值。
#define FDT_BYTE 1
#define FDT_SHORT 2
#define FDT_INT 3
#define FDT_INT64 4
#define FDT_FLOAT 5
#define FDT_DOUBLE 6
#define FDT_BOOL 7
#define FDT_DATE_TIME 8
#define FDT_SUB_PTR 9
#define FDT_FIXED_TEXT 10 // 定長文本
#define FDT_BIN 11
#define FDT_MEMO 12 // 備注文本
struct FIELD_INF
{
TCHAR m_szName [MAX_FIELD_NAME_LEN + 1];
INT m_nType; // 字段的類型
INT m_nOffset; // 本字段數據在記錄中的偏移量
// 字段數據長度,僅對 FDT_FIXED_TEXT 定長文本字段有效,值在
// MIN_FIXED_TEXT_FIELD_WIDTH 及 MAX_FIXED_TEXT_FIELD_WIDTH 之間。
INT m_nFixedTextWidth;
// 保留
INT m_nReserved [10];
};
typedef FIELD_INF* PFIELD_INF;
/////////////////////////
/*
.EDB數據庫文件結構圖:
DB_HEADER (結構)
本數據庫中的字段總數 (整數值)
與字段數目相同數目的 FIELD_INF 結構
記錄書簽及刪除標記(整數值,如果小于 0 表示已經被標記刪除) + 記錄數據
.
.
.
*/
3、.EDT文件格式 ////////////////////////////////////////////////////////////////////
#define BLK_SIZE 512 // 每一個數據塊的尺寸
struct DAT_HEADER
{
DWORD m_dwMark; // 為 DAT_BEGIN_MARK
INT m_nVer; // 本輔助文件所屬數據庫的版本號
DATE m_dtCreated; // 創(chuàng)建日期
INT m_nBlockCount; // 當前所有塊的數目(包括文件頭所在塊)。
INT m_nEmptyBlockCount; // 當前空塊的數目。
INT m_nStartEmptyBlockNO; // 第一個空塊的位置(0 表示無空塊)。
};
typedef DAT_HEADER* PDAT_HEADER;
/////////////////////////
// 塊號為 0 的第一塊包含 DAT_HEADER 信息。
struct BLOCK_HEADER
{
INT m_nPrevBlockNO; // 上一塊的位置,如果為 0 ,表示為首塊。
INT m_nNextBlockNO; // 下一塊的位置,如果為 0 ,表示為尾塊。
INT m_nDataSize; // 本塊中數據的長度,如果為 0 ,表示為空塊。
};
typedef BLOCK_HEADER* PBLOCK_HEADER;
/////////////////////////
/*
.EDT輔助文件結構圖:
DAT_HEADER (結構),占據一塊
BLOCK_HEADER (結構)+ 數據
.
.
.
*/
4、.ENX文件格式 ////////////////////////////////////////////////////////////////////
struct ALL_FIELDS_OF_INDEX
{
INT m_nFieldsCount; // 本索引所對應的字段總數。
// 所有字段的名稱
TCHAR m_szaryFieldName [MAX_INDEX_FIELDS_COUNT][MAX_FIELD_NAME_LEN + 1];
// 所有字段的類型,如果小于 0 ,表示為文本型,其絕對值為文本的固定寬度。
INT m_naryFieldsType [MAX_INDEX_FIELDS_COUNT];
};
typedef ALL_FIELDS_OF_INDEX* PALL_FIELDS_OF_INDEX;
/////////////////////////
#define MIN_NODE_SIZE 512 // 結點的最小尺寸
#define MAX_KEY_SIZE 80 // 關鍵字數據的最大尺寸
// 結點中的項目數不能小于 4 。
struct INDEX_HEADER
{
DWORD m_dwMark; // 為 INDEX_BEGIN_MARK
INT m_nVer; // 本索引文件所屬數據庫的版本號
DATE m_dtCreated; // 創(chuàng)建日期
#define IT_NORMAL 0
// 所有文本型字段使用拼音存儲。
#define IT_PY_TEXT 1
// 所有文本型字段使用南方拼音存儲(將相近音轉換為統(tǒng)一音)。
#define IT_SOUTH_PY_TEXT 2
INT m_nType;
#define IX_NOT_MATCH_CASE_TEXT (1 << 0) // 所有文本型字段中的字母不區(qū)分大小寫存儲。
#define IX_DISCARD_ALL_SPACE (1 << 1) // 所有文本型字段中的全半角空格都被拋棄。
DWORD m_dwState;
INT m_nNodeCount; // 當前所有結點的數目(包括文件頭所在結點)。
INT m_nEmptyNodeCount; // 當前空結點的數目。
INT m_nStartEmptyNodeNO; // 第一個空結點的位置(0 表示無空結點)。
INT m_nRootNodeNO; // B+ 樹根(樹 / 葉)結點的位置。
/////////////////
INT m_nNodeSize; // 每一個結點的尺寸。
INT m_nKeySize; // 關鍵字數據(所有字段的尺寸和)的尺寸。
ALL_FIELDS_OF_INDEX m_infFields;
};
typedef INDEX_HEADER* PINDEX_HEADER;
/////////////////////////
struct NODE_HEAD
{
#define INS_IS_TREE_NODE (1 << 0)
#define INS_IS_EMPTY_NODE (1 << 1)
WORD m_wState;
SHORT m_shtItemCount;
};
typedef NODE_HEAD* PNODE_HEAD;
/////////////////////////
/*
1、樹結點的結構:
NODE_HEAD
結點號(INT) + 關鍵字數據
.
.
.
最右結點號(INT)
2、葉結點的結構:
NODE_HEAD
對應記錄號(INT) + 關鍵字數據
.
.
.
3、空結點的結構:
NODE_HEAD,其中 m_shtItemCount 始終為 0 。
一個 INT 記錄上一個空結點(0 表示無),一個 INT 記錄下一個空結點(0 表示無)。
*/
/////////////////////////
/*
.ENX索引文件結構圖:
INDEX_HEADER (結構)
B+ 樹結點數據集
*/

[em08][em08][em08]
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用gcc的-E -P選項展開源代碼中的宏
模擬內存動態(tài)分配學習
一意孤行: 回調機制的簡單實現
C語言火車訂單管理源碼
AVL樹源代碼
libevent源碼深度剖析五
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服