⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbfile.h

📁 ADO查看数据库工具的原码
💻 H
字号:

// DBFile1.h: interface for the CDBFile class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DBFILE1_H__EC86B19E_254A_45D6_89E9_B0115D895759__INCLUDED_)
#define AFX_DBFILE1_H__EC86B19E_254A_45D6_89E9_B0115D895759__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef struct {
		char   flag[2];  // 标志
		char   Result[16]; // 结果
} EL_DBFileHeadTag;  //文件头


typedef struct{
		DWORD  InfoLen;
		char    *Info;
} EL_DBFileInfo;   // 信息头


typedef struct {
		char  state[2];  // 表头标志
		DWORD FieldNum;  //多少个域
		DWORD FieldLen ;  //域名一共长度
}EL_FieldHeadTag; // 域名头描述

typedef struct {
		char FieldName[20];  // 域名
		char FieldType;      // 数据类型
}EL_FieldTag;  //域名数据结构

// 数据区描述
typedef struct {
		char  state[2]; // 标志
		DWORD DataNum; // 数据信息数量
		DWORD DataLen; // 数据长度
}EL_DataHeadTag;

// 一个记录描述
typedef struct {
		DWORD RecordNo;     // 记录编号
		DWORD RecordLen;    // 记录数长度
		DWORD RecordNum;    // 记录数
}EL_RecordTag;

// 一个记录中域的数据
typedef struct {
		DWORD DataSize;   // 数据尺寸 
		BYTE  *DataBuff;  // 数据
}EL_FieldDataTag;

// 索引区信息头
typedef struct {
	char  state[2];      // 索引表标志
	DWORD IndexType ;    // 索引方式表示
	DWORD IndexNum;      // 索引数量
	DWORD IndexLen;      // 索引区长度 
}EL_IndexHeadTag;

 
typedef struct {
		DWORD index;
}SEEK_TAG;



#define FILEINFO_OFFSET  sizeof(EL_DBFileHeadTag)
  
 
#include "MFile.h"	// Added by ClassView



class CDBFile  
{
 
public:
	CDBFile();
	virtual ~CDBFile();
	
	//打开操作模式
	enum { DB_MODE_READ=0 , DB_MODE_CREATE ,DB_MODE_APPEND};
	//打开打包的文件
 	int  Open(int mode,char *fn=NULL);   
	//打开打包的内存
	int  OpenMem(char *buf,int len,int mode);
	//获取内存打包的数据
	char *GetMem(int *len){ return m_mfile.getdata(len);  }
	//关闭打包
	int Close();
 	// 设置包文件路径
	void SetFilePath(char *pPath) {strcpy(m_dbfilename,pPath);}
//
//
protected:
	EL_DBFileHeadTag m_head;
	EL_DBFileInfo    m_info;   // 信息头

	EL_FieldHeadTag  m_fieldhd; //表头信息区头
	DWORD            get_fieldoffset() ;
	EL_FieldTag      *m_fieldname;  //表名信息列表

	EL_DataHeadTag   m_datahd ;  // 数据区   
	DWORD            get_dataoffset(); // 数据区其实位置
	EL_RecordTag     m_record;   // 记录集     
	EL_FieldDataTag  *m_fielddata; // 记录数据
	BYTE             *m_DataBuffer; //

	SEEK_TAG         *m_index;   
	EL_IndexHeadTag  m_indexhd;
	DWORD			 get_indexoffset();
	int m_onum;
	FILE *m_fp;
	int  get_recordcount();    // 获得记录总数
	char m_dbfilename[80];
	
protected:
	int CreateFile(char *fn);
	int OpenFile(char *fn);
	int AddFile(char *fn);
	int WriteFileInfo();
	int ReadFileInfo();
	int WriteField();
	int ReadField();

	int WriteDataHead();
	int ReadDataHead();

	int WriteRecord();
	int ReadRecord();
	int AppendRecord();
	int SeekRecord(int i);

	int CreateIndex();
	int ReadIndex();
	int WriteIndex();
    int m_curindex;
	int GetCurSel(){ return m_curindex;}
 
protected:
	EL_FieldTag *NewFieldTag(int num);
	BYTE *NewDataBuff(int id,int len);
	EL_FieldDataTag *NewFieldDataTag(int num);
	char *NewInfo(int num);

private:
	BOOL IsMaskField(int field);
	BOOL m_bUseMemFile;
	CMFile m_mfile;
	int write_file(const void *buf,int len,int size,FILE *fp);
	int read_file(void *buf,int len,int size,FILE *fp);
	int seek_file(FILE *fp,int pos,int mode);
	void close_file(FILE *fp);
	int tell_file(FILE *fp);
	FILE *open_file(char *fn,char *mode);
	BOOL m_bExistIndex;


protected:
	char *m_fieldmask;   // 无效域
};


#endif // !defined(AFX_DBFILE1_H__EC86B19E_254A_45D6_89E9_B0115D895759__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -