📄 dbkrnl.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 + -