📄 _dbdao.h
字号:
/************************************************************************
** _ D B D A O . H *
** *
*************************************************************************
** Copyright (C) 1996 by Microsoft Corporation *
** All Rights Reserved *
************************************************************************/
/*
_DBDAO.H
Internal definitions and prototypes for dbdao C++ classes
*/
#ifndef __DBDAO_H_
#define __DBDAO_H_
/*****************************************************************************
* Forwards
*/
class COleVariant;
class CdbBookmark;
class CdbException;
class CdbOleObject;
class CdbObject;
class CdbError;
class CdbProperty;
class CdbDBEngine;
class CdbWorkspace;
class CdbDatabase;
class CdbConnection;
class CdbRecordset;
class CdbGetRowsEx;
class CdbQueryDef;
class CdbTableDef;
class CdbField;
class CdbRelation;
class CdbIndex;
class CdbUser;
class CdbGroup;
class CdbDocument;
class CdbContainer;
class CdbParameter;
class CdbCollection;
class CdbErrors;
class CdbProperties;
class CdbWorkspaces;
class CdbDatabases;
class CdbConnections;
class CdbRecordsets;
class CdbQueryDefs;
class CdbTableDefs;
class CdbFields;
class CdbRelations;
class CdbIndexes;
class CdbUsers;
class CdbGroups;
class CdbDocuments;
class CdbContainers;
class CdbParameters;
class CdbBStr;
/*****************************************************************************
* DAO runtime key
*/
const char szKEY[] = "mbmabptebkjcdlgtjmskjwtsdhjbmkmwtrak";
/*****************************************************************************
* Miscellaneous defines
*/
#define DAO_MAXSEEKFIELDS 13
/*****************************************************************************
* CdbBSTR (OLE BSTR helper)
*/
class DLLEXPORT CdbBSTR
{
public:
CONSTRUCTOR CdbBSTR (BSTR=NULL);
DESTRUCTOR ~CdbBSTR (VOID);
operator BSTR * (VOID);
operator LPCTSTR (VOID);
private:
BSTR m_bstr;
};
/*****************************************************************************
* CdbVariant (OLE Variant helper)
*/
class CdbVariant : public COleVariant
{
public:
CONSTRUCTOR CdbVariant (LONG l);
CONSTRUCTOR CdbVariant (VOID);
CONSTRUCTOR CdbVariant (LPCTSTR pstr);
CONSTRUCTOR CdbVariant (SHORT s, BOOL bIsBool = FALSE);
CONSTRUCTOR CdbVariant (LPVARIANT pv);
CONSTRUCTOR CdbVariant (LPSAFEARRAY psa);
VOID operator = (LPVARIANT pv);
VOID operator = (LPCTSTR pstr);
VOID operator = (SHORT s);
VOID operator = (const int i);
VOID operator = (LONG l);
};
inline CONSTRUCTOR CdbVariant::CdbVariant(
VOID) : COleVariant()
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
inline CdbVariant::CdbVariant (LONG l)
{
if (l == -1)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
{
vt = VT_I4;
lVal = l;
}
}
inline CONSTRUCTOR CdbVariant::CdbVariant(
LPCTSTR pstr): COleVariant(pstr,VT_BSTRT)
{
if (!pstr)
{
VariantClear(this);
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
}
inline CONSTRUCTOR CdbVariant::CdbVariant(
SHORT s, BOOL bIsBool) : COleVariant(s)
{
if (bIsBool)
{
vt = VT_BOOL;
boolVal = s;
}
else if (s==-1)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
}
inline CONSTRUCTOR CdbVariant::CdbVariant(
LPVARIANT pv)
{
if (!pv)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
VariantCopy(this, pv);
}
inline CONSTRUCTOR CdbVariant::CdbVariant(
LPSAFEARRAY psa)
{
if (!psa)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
{
vt = VT_ARRAY|VT_UI1;
parray = psa;
}
}
inline VOID CdbVariant::operator =(
LPVARIANT pv)
{
if (!pv)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
VariantCopy(this, pv);
}
inline VOID CdbVariant::operator =(
LPCTSTR pstr)
{
if (!pstr)
{
VariantClear(this);
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
{
#ifdef UNICODE
bstrVal = SysAllocString(pstr);
#else
bstrVal = SysAllocStringByteLen(pstr, strlen(pstr));
#endif
vt = VT_BSTR;
}
}
inline VOID CdbVariant::operator =(
SHORT s)
{
if (s==-1)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
{
vt = VT_I2;
iVal = s;
}
}
inline VOID CdbVariant::operator =(
const int i)
{
if (i==-1)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
{
vt = VT_I2;
iVal = (SHORT)i;
}
}
inline VOID CdbVariant::operator =(
LONG l)
{
if (l==-1)
{
vt = VT_ERROR;
scode = DISP_E_PARAMNOTFOUND;
}
else
{
vt = VT_I4;
lVal = l;
}
}
/*****************************************************************************
* CdbWide
*/
HRESULT CdbWideFromAnsi(LPSTR, unsigned int, BSTR *);
class CdbWide
{
public:
CONSTRUCTOR CdbWide (LPSTR pstr, unsigned int cb=0)
{
CdbWideFromAnsi(pstr, (pstr ? (cb==0 ? strlen(pstr) : cb) : 0), &m_bstr);
}
DESTRUCTOR ~CdbWide ()
{
SysFreeString(m_bstr);
}
operator LPWSTR ()
{
return (LPWSTR)m_bstr;
}
operator LPSTR ()
{
return (LPSTR)m_bstr;
}
ULONG cBytes ()
{
return SysStringByteLen(m_bstr);
}
private:
BSTR m_bstr;
};
/*****************************************************************************
* CdbOleObject
*/
class DLLEXPORT CdbOleObject : public CObject
{
public:
CONSTRUCTOR CdbOleObject (VOID);
virtual DESTRUCTOR ~CdbOleObject (VOID);
BOOL Exists (VOID);
CdbOleObject & operator = (CdbOleObject &o);
operator LPUNKNOWN (){ return GetInterface();}
VOID SetInterface (LPUNKNOWN punk, BOOL bAddRef=FALSE);
VOID SetInterface (REFIID riidClass, REFIID riidInterface);
VOID SetInterfaceLic (REFIID riidClass, REFIID riidInterface);
LPUNKNOWN GetInterface (BOOL bAddRef=FALSE, BOOL bThrowException=TRUE) const;
virtual VOID OnInterfaceChange (VOID);
VOID SetRichErrorInfo (LPOLESTR pstrSource, LPOLESTR pstrDescription, LPOLESTR pstrHelpFile, ULONG ulHelpID) const;
protected:
BOOL StartOLE (VOID);
LPUNKNOWN m_punkInterface;
};
/*****************************************************************************
* CdbCollection
*/
class DLLEXPORT CdbCollection : public CdbOleObject
{
public:
// Methods
virtual CdbObject ObItem (LONG i) = 0;
virtual CdbObject ObItem (LPCTSTR pstr) = 0;
virtual LONG GetCount (VOID) = 0;
virtual VOID ObAppend (CdbObject &obj) = 0;
virtual VOID Delete (LPCTSTR pstr) = 0;
virtual VOID Refresh (VOID) = 0;
};
class DLLEXPORT CdbStaticCollection : public CdbCollection
{
public:
CdbObject ObItem (LONG i);
CdbObject ObItem (LPCTSTR pstr);
LONG GetCount (VOID);
VOID ObAppend (CdbObject &obj);
VOID Delete (LPCTSTR pstr);
VOID Refresh (VOID) ;
};
class DLLEXPORT CdbDynamicCollection : public CdbCollection
{
public:
CdbObject ObItem (LONG i);
CdbObject ObItem (LPCTSTR pstr);
LONG GetCount (VOID);
VOID ObAppend (CdbObject &obj);
VOID Delete (LPCTSTR pstr);
VOID Refresh (VOID);
};
#define DAOMFC_STATIC_COLLECTION_DECL(objColl, objSingle, intSingle) \
class DLLEXPORT objColl : public CdbStaticCollection \
{ \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -