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

📄 dbkrnl.h

📁 oledb封装类仿MFC的CRecordset
💻 H
字号:
#pragma once

#ifdef DBKRNL_EXPORTS
#define DBKRNL_API __declspec(dllexport)
#else
	#pragma comment(lib, "DBKrnl.lib")
#define DBKRNL_API __declspec(dllimport)
#endif
#include <oledb.h>
#include <oledberr.h>

class DBKRNL_API COleDBDatabase
{
public:
	COleDBDatabase(void);
	~COleDBDatabase(void);
	IDBInitialize* m_pIDBInitialize;
	BOOL Open(LPCOLESTR pSvrAddr, LPCOLESTR pUID, LPCOLESTR pPWD, LPCOLESTR pDatabase, LPCOLESTR pProgID = L"SQLOLEDB.1");
	BOOL Open(LPCOLESTR pConnectString);
	void Close(void);
	BOOL ExecuteSQL(LPCOLESTR pSQLStatement);
};

class DBKRNL_API COleDBRecordset
{
public:
	COleDBRecordset(void);
	~COleDBRecordset(void);
	virtual void BindColumns(void) = 0;
	void AddNew(void);
	void Edit(void);
	BOOL Update(void);
	void Close(void);
	BOOL Delete(void);
	BOOL MoveLast(void);
	BOOL MoveFirst(void);
	BOOL Move(long nSkipRows);
	BOOL Open(COleDBDatabase* pDatabase, LPCOLESTR pTable, LPCOLESTR pColumnNames = L"*");
	BOOL Requery(LPCOLESTR pColumnNames = NULL);
	void SetColumnInfo(LPCOLESTR pColumnNames, WORD wDBType, LPVOID pColumnValue, LPVOID pColumnLength = NULL, DWORD dwPart = DBPART_VALUE|DBPART_STATUS, DBOBJECT* pObjectStruct = NULL, BOOL bReadOnly = FALSE, DWORD dwMaxLength = -1);
	BOOL SetAbsolutePosition(long nRow);
	long GetRecordCount(void);
	void BindText(LPCOLESTR pColumnName, LPSTR  pTextValue, long* pTextLen);
	void BindText(LPCOLESTR pColumnName, LPWSTR pTextValue, long* pTextLen);
	void BindLong(LPCOLESTR pColumnName, long* pLongValue, BOOL bReadonly = FALSE);
	void BindDouble(LPCOLESTR pColumnName, double* pDoubleValue);
	void BindDataTime(LPCOLESTR pColumnName, DBTIMESTAMP* pDataTimeValue);
	void BindNumeric(LPCOLESTR pColumnName, DB_NUMERIC* pNumericValue);
	void BindLonglong(LPCOLESTR pColumnName, LONGLONG* pLonglongValue, BOOL bReadonly = FALSE);
	void BindCurrency(LPCOLESTR pColumnName, CURRENCY* pCurrencyValue);
	void BindBool(LPCOLESTR pColumnName, BOOL* pBoolValue);
	void BindFloat(LPCOLESTR pColumnName, float* pFloatValue);
	void BindShort(LPCOLESTR pColumnName, short* pShortValue, BOOL bReadonly = FALSE);
	void BindISequentialStream(LPCOLESTR pColumnName, ISequentialStream** ppIStreamValue, long* pLength);
	void BindGUID(LPCOLESTR pColumnName, LPGUID pGUIDValue);
	void BindByteArray(LPCOLESTR pColumnName, LPBYTE ppByteArray, long* pLength, long nMaxLength = 0x10000);
	virtual LPCOLESTR GetDefaultConnectString(void);
	void SetFilter(LPCOLESTR pFilter);
	void SetSort(LPCOLESTR pSort);
	void SetTable(LPCOLESTR pTable);

	BOOL IsOpen(void)
	{
		return m_bIsOpen;
	}

	BOOL IsEOF(void)
	{
		return m_bIsEOF;
	}

	BOOL IsBOF(void)
	{
		return m_bIsBOF;
	}

	BOOL MoveNext(void)
	{
		return Move(0);
	}
	BOOL MovePrev(void)
	{
		return Move(-2);
	}
	void SetRowsBuffer(LPVOID pBuf)
	{
		m_pRowsBuffer=(LPBYTE)pBuf;
	}
	LPCOLESTR GetFilter(void)
	{
		return m_strFilter;
	}
	LPCOLESTR GetSort(void)
	{
		return m_strSort;
	}

private:
	BOOL InitColumnsBuffer(IRowset* pRowset);
	void ReleaseRows(void);
	BOOL GetData(void);
private:
	DWORD m_dwAddNewEdit;
	long m_nRowsCount;
	DWORD m_dwColumnsCount;
	DBPROPSET m_rgCmdPropSet[1];
	BOOL m_bIsBOF;
	BOOL m_bIsEOF;
	HROW m_hRow;
	HACCESSOR m_hAccessor;
	DBCOLUMNINFO* m_pColumnInfo;
	DBBINDSTATUS* m_pBindingStatus;
	DWORD m_dwColumns;
	DBBINDING* m_pColumnBinding;
	IAccessor* m_pAccessor;
	IRowset* m_pRowset;
	IRowsetChange* m_pIRowsetChange;
	BOOL m_bIsOpen;
	LPOLESTR m_strHalfSQLStatement;
	LPBYTE m_pRowsBuffer;
	DWORD m_dwStatusReadonly;
	DWORD m_dwStatusReadWrite;
	DBOBJECT m_ObjectStruct;
	BOOL m_bOwnDatabase;
	size_t m_nTBLen;
	size_t m_nFBLen;
	size_t m_nSBLen;
	size_t m_nHBLen;
public:
	COleDBDatabase* m_pDatabase;
	LPOLESTR m_strFilter;
	LPOLESTR m_strSort;
	LPOLESTR m_strTable;
	BOOL m_bHasObject;
};

⌨️ 快捷键说明

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