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

📄 odbcdbgridfile.h

📁 一个不错的数据源连接程序
💻 H
字号:
// OdbcDBGridFILE.h: interface for the COdbcDBGridFILE class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ODBCDBGRIDFILE_H__5C301E9E_D9E1_4B62_B7C9_686B34211E99__INCLUDED_)
#define AFX_ODBCDBGRIDFILE_H__5C301E9E_D9E1_4B62_B7C9_686B34211E99__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "GridCtrl.h"
#include <afxdb.h>

class COdbcDBGridFILE  
{
	struct SRowInfo
	{
		BOOL bWritten;//标志该条记录是否已经写到内存文件映射文件中
		char *pAddress;//如果已经保存了的话,指向该条记录的地址
	};//这个结构用来指示每条记录是否已经写到内存映射文件及其地址。


public:
	int Release();//释放资源
	int SetGridText(GV_DISPINFO *pDispInfo);//被外部函数调用接口,用来返回每个单元格应该显示的内容
	int InitGrid();//初始化函数
	COdbcDBGridFILE(CGridCtrl *pGrid = NULL, CDatabase *pDatabase = NULL, CString strSql = "", CString strFilePath = "");
	virtual ~COdbcDBGridFILE();


private:
	int FetchData();//从记录集中获取数据保存到内存映射文件中
	int GetFieldInfo(int iFieldIndex, CString &strFieldName);//得到查询结果的字段名
	int GetSelectSqlColumns();//得到查询的结果共有多少列
	int DealMapFileSizeLess();//当内存映射文件大小不够时,自动重新进行分配。
	int GetAGridData(int iRow, int iCol, CString &strOut);//得到一个单元格的内容,如果该单元格所对就的行还没有写到内存映射文件中去的话,那么先要写到内存映射中
	int InitMapFile();//被初始化函数调用,用来初始化内存映射文件
	int GetSelectTotalCount();//得到查询的结果共有多少行


private:
	CGridCtrl *m_pGrid;
	struct SRowInfo *m_pRowFileInfo;

	//for map file
	PVOID m_pvFile;
	HANDLE m_hFilemap, m_hFile;
	char *m_cpWrite;
	int m_iCurrentCount;
	CString m_strFilePath;
	int m_iMapFileSize;

	//for database
	CDatabase *m_pDatabase;
	CString m_strSql;
	CRecordset m_Set;
	int m_iTotalCount;
	int m_iColumns;
	int m_iOnceReadRows;
	int m_bConnectMode;



};

#endif // !defined(AFX_ODBCDBGRIDFILE_H__5C301E9E_D9E1_4B62_B7C9_686B34211E99__INCLUDED_)

⌨️ 快捷键说明

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