windows-nt/Source/XPSP1/NT/public/sdk/inc/atl30/atldbsch.h
2020-09-26 16:20:57 +08:00

1430 lines
36 KiB
C++

// This is a part of the Active Template Library.
// Copyright (C) 1996-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Active Template Library Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Active Template Library product.
///////////////////////////////////////////////////////////////////////////
// ATLDBSCH.H : Declarations for OLE DB Schema Rowset Consumer Support
//
#ifndef __ATLDBSCH_H__
#define __ATLDBSCH_H__
namespace ATL
{
template <ULONG nRestrictions>
class _CStoreRestrictions
{
public:
_CStoreRestrictions()
{
m_pvarRestrictions = NULL;
ATLTRY(m_pvarRestrictions = new CComVariant[nRestrictions]);
}
~_CStoreRestrictions()
{
delete [] m_pvarRestrictions;
}
HRESULT GetRowset(const CSession& session, const GUID& guidSchema, IRowset** ppRowset)
{
ATLASSERT(session.m_spOpenRowset != NULL);
CComPtr<IDBSchemaRowset> spSchemaRowset;
HRESULT hr;
hr = session.m_spOpenRowset->QueryInterface(IID_IDBSchemaRowset, (void**)&spSchemaRowset);
if (FAILED(hr))
return hr;
return spSchemaRowset->GetRowset(NULL, guidSchema, nRestrictions,
m_pvarRestrictions, IID_IRowset, 0, NULL, (IUnknown**)ppRowset);
}
CComVariant* m_pvarRestrictions;
};
template <>
class _CStoreRestrictions<0>
{
public:
HRESULT GetRowset(const CSession& session, const GUID& guidSchema, IRowset** ppRowset)
{
ATLASSERT(session.m_spOpenRowset != NULL);
CComPtr<IDBSchemaRowset> spSchemaRowset;
HRESULT hr;
hr = session.m_spOpenRowset->QueryInterface(IID_IDBSchemaRowset, (void**)&spSchemaRowset);
if (FAILED(hr))
return hr;
return spSchemaRowset->GetRowset(NULL, guidSchema, 0,
NULL, IID_IRowset, 0, NULL, (IUnknown**)ppRowset);
}
};
///////////////////////////////////////////////////////////////////////////
// class CSchemaRowset
template <class T, short nRestrictions>
class CSchemaRowset :
public CAccessorRowset<T, CRowset>,
public _CStoreRestrictions<nRestrictions>
{
public:
// Operations
HRESULT Open(const CSession& session, const GUID& guidSchema)
{
HRESULT hr;
hr = GetRowset(session, guidSchema, &m_spRowset);
if (SUCCEEDED(hr))
hr = Bind();
return hr;
}
};
///////////////////////////////////////////////////////////////////////////
// class CRestrictions
template <class T, short nRestrictions, const GUID* pguid>
class CRestrictions : public CSchemaRowset<T, nRestrictions>
{
public:
HRESULT Open(const CSession& session, LPCTSTR lpszParam1 = NULL, LPCTSTR lpszParam2 = NULL,
LPCTSTR lpszParam3 = NULL, LPCTSTR lpszParam4 = NULL,
LPCTSTR lpszParam5 = NULL, LPCTSTR lpszParam6 = NULL,
LPCTSTR lpszParam7 = NULL)
{
USES_CONVERSION;
CComVariant* pVariant;
if (m_pvarRestrictions == NULL)
return E_OUTOFMEMORY;
if (lpszParam1 != NULL)
{
m_pvarRestrictions->vt = VT_BSTR;
m_pvarRestrictions->bstrVal = ::SysAllocString(T2COLE(lpszParam1));
}
if (lpszParam2 != NULL)
{
pVariant = m_pvarRestrictions + 1;
pVariant->vt = VT_BSTR;
pVariant->bstrVal = ::SysAllocString(T2COLE(lpszParam2));
}
if (lpszParam3 != NULL)
{
pVariant = m_pvarRestrictions + 2;
pVariant->vt = VT_BSTR;
pVariant->bstrVal = ::SysAllocString(T2COLE(lpszParam3));
}
if (lpszParam4 != NULL)
{
pVariant = m_pvarRestrictions + 3;
pVariant->vt = VT_BSTR;
pVariant->bstrVal = ::SysAllocString(T2COLE(lpszParam4));
}
if (lpszParam5 != NULL)
{
pVariant = m_pvarRestrictions + 4;
pVariant->vt = VT_BSTR;
pVariant->bstrVal = ::SysAllocString(T2COLE(lpszParam5));
}
if (lpszParam6 != NULL)
{
pVariant = m_pvarRestrictions + 5;
pVariant->vt = VT_BSTR;
pVariant->bstrVal = ::SysAllocString(T2COLE(lpszParam6));
}
if (lpszParam7 != NULL)
{
pVariant = m_pvarRestrictions + 6;
pVariant->vt = VT_BSTR;
pVariant->bstrVal = ::SysAllocString(T2COLE(lpszParam7));
}
return CSchemaRowset<T, nRestrictions>::Open(session, *pguid);
}
};
///////////////////////////////////////////////////////////////////////////
// CSchemas
class CSchemas
{
public:
CSchemas()
{
m_nSchemas = 0;
m_pSchemaGuids = NULL;
m_pulRestrictions = NULL;
};
~CSchemas()
{
// Clean up allocated memory
if (m_pSchemaGuids != NULL)
{
CoTaskMemFree(m_pSchemaGuids);
CoTaskMemFree(m_pulRestrictions);
}
};
// Operations
HRESULT GetSchemas(const CSession& session)
{
CComPtr<IDBSchemaRowset> spSchemaRowset;
HRESULT hr;
ATLASSERT(session.m_spOpenRowset != NULL);
hr = session.m_spOpenRowset->QueryInterface(IID_IDBSchemaRowset,
(void**)&spSchemaRowset);
if (FAILED(hr))
return hr;
return spSchemaRowset->GetSchemas(&m_nSchemas, &m_pSchemaGuids,
&m_pulRestrictions);
};
// Attributes
ULONG m_nSchemas;
LPGUID m_pSchemaGuids;
ULONG* m_pulRestrictions;
};
///////////////////////////////////////////////////////////////////////////
// CAssertionInfo
class CAssertionInfo
{
public:
CAssertionInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
VARIANT_BOOL m_bIsDeferrable;
VARIANT_BOOL m_bInitiallyDeferred;
TCHAR m_szDescription[129];
// Binding Map
BEGIN_COLUMN_MAP(CAssertionInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_bIsDeferrable)
COLUMN_ENTRY(5, m_bInitiallyDeferred)
COLUMN_ENTRY(6, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CCatalogInfo
class CCatalogInfo
{
public:
CCatalogInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szName[129];
TCHAR m_szDescription[129];
// Binding Info
BEGIN_COLUMN_MAP(CCatalogInfo)
COLUMN_ENTRY(1, m_szName)
COLUMN_ENTRY(2, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CCharacterSetInfo
class CCharacterSetInfo
{
public:
CCharacterSetInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szFormOfUse[129];
LARGE_INTEGER m_nNumCharacters;
TCHAR m_szCollateCatalog[129];
TCHAR m_szCollateSchema[129];
TCHAR m_szCollateName[129];
// Binding Info
BEGIN_COLUMN_MAP(CCharacterSetInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szFormOfUse)
COLUMN_ENTRY(5, m_nNumCharacters)
COLUMN_ENTRY(6, m_szCollateCatalog)
COLUMN_ENTRY(7, m_szCollateSchema)
COLUMN_ENTRY(8, m_szCollateName)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CCheckConstraintInfo
class CCheckConstraintInfo
{
public:
CCheckConstraintInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szCheckClause[129];
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CCheckConstraintInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szCheckClause)
COLUMN_ENTRY(5, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CCollationInfo
class CCollationInfo
{
public:
// Constructors
CCollationInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szCharSetCatalog[129];
TCHAR m_szCharSetSchema[129];
TCHAR m_szCharSetName[129];
TCHAR m_szPadAttribute[10];
// Binding Maps
BEGIN_COLUMN_MAP(CCollationInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szCharSetCatalog)
COLUMN_ENTRY(5, m_szCharSetSchema)
COLUMN_ENTRY(6, m_szCharSetName)
COLUMN_ENTRY(7, m_szPadAttribute)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CColumnDomainUsageInfo
class CColumnDomainUsageInfo
{
public:
// Constructor
CColumnDomainUsageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
// Binding Maps
BEGIN_COLUMN_MAP(CColumnDomainUsageInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szTableCatalog)
COLUMN_ENTRY(5, m_szTableSchema)
COLUMN_ENTRY(6, m_szTableName)
COLUMN_ENTRY(7, m_szColumnName)
COLUMN_ENTRY(8, m_guidColumn)
COLUMN_ENTRY(9, m_nColumnPropID)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CColumnPrivilegeInfo
class CColumnPrivilegeInfo
{
public:
// Constructor
CColumnPrivilegeInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szGrantor[129];
TCHAR m_szGrantee[129];
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
TCHAR m_szPrivilegeType[20];
VARIANT_BOOL m_bIsGrantable;
// Binding Maps
BEGIN_COLUMN_MAP(CColumnPrivilegeInfo)
COLUMN_ENTRY(1, m_szGrantor)
COLUMN_ENTRY(2, m_szGrantee)
COLUMN_ENTRY(3, m_szTableCatalog)
COLUMN_ENTRY(4, m_szTableSchema)
COLUMN_ENTRY(5, m_szTableName)
COLUMN_ENTRY(6, m_szColumnName)
COLUMN_ENTRY(7, m_guidColumn)
COLUMN_ENTRY(8, m_nColumnPropID)
COLUMN_ENTRY(9, m_szPrivilegeType)
COLUMN_ENTRY(10, m_bIsGrantable)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CColumnsInfo
class CColumnsInfo
{
public:
// Constructors and Destructors
CColumnsInfo()
{
memset(this, 0, sizeof(*this));
}
// Operations
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
ULONG m_nOrdinalPosition;
VARIANT_BOOL m_bColumnHasDefault;
TCHAR m_szColumnDefault[129];
ULONG m_nColumnFlags;
VARIANT_BOOL m_bIsNullable;
USHORT m_nDataType;
GUID m_guidType;
ULONG m_nMaxLength;
ULONG m_nOctetLength;
USHORT m_nNumericPrecision;
SHORT m_nNumericScale;
ULONG m_nDateTimePrecision;
TCHAR m_szCharSetCatalog[129];
TCHAR m_szCharSetSchema[129];
TCHAR m_szCharSetName[129];
TCHAR m_szCollationCatalog[129];
TCHAR m_szCollationSchema[129];
TCHAR m_szCollationName[129];
TCHAR m_szDomainCatalog[129];
TCHAR m_szDomainSchema[129];
TCHAR m_szDomainName[129];
TCHAR m_szDescription[129];
BEGIN_COLUMN_MAP(CColumnsInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_szColumnName)
COLUMN_ENTRY(5, m_guidColumn)
COLUMN_ENTRY(6, m_nColumnPropID)
COLUMN_ENTRY(7, m_nOrdinalPosition)
COLUMN_ENTRY(8, m_bColumnHasDefault)
COLUMN_ENTRY(9, m_szColumnDefault)
COLUMN_ENTRY(10, m_nColumnFlags)
COLUMN_ENTRY(11, m_bIsNullable)
COLUMN_ENTRY(12, m_nDataType)
COLUMN_ENTRY(13, m_guidType)
COLUMN_ENTRY(14, m_nMaxLength)
COLUMN_ENTRY(15, m_nOctetLength)
COLUMN_ENTRY(16, m_nNumericPrecision)
COLUMN_ENTRY(17, m_nNumericScale)
COLUMN_ENTRY(18, m_nDateTimePrecision)
COLUMN_ENTRY(19, m_szCharSetCatalog)
COLUMN_ENTRY(20, m_szCharSetSchema)
COLUMN_ENTRY(21, m_szCharSetName)
COLUMN_ENTRY(22, m_szCollationCatalog)
COLUMN_ENTRY(23, m_szCollationSchema)
COLUMN_ENTRY(24, m_szCollationName)
COLUMN_ENTRY(25, m_szDomainCatalog)
COLUMN_ENTRY(26, m_szDomainSchema)
COLUMN_ENTRY(27, m_szDomainName)
COLUMN_ENTRY(28, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CConstraintColumnUsageInfo
class CConstraintColumnUsageInfo
{
public:
// Constructor
CConstraintColumnUsageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
TCHAR m_szConstraintCatalog[129];
TCHAR m_szConstraintSchema[129];
TCHAR m_szConstraintName[129];
// Binding Maps
BEGIN_COLUMN_MAP(CConstraintColumnUsageInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_szColumnName)
COLUMN_ENTRY(5, m_guidColumn)
COLUMN_ENTRY(6, m_nColumnPropID)
COLUMN_ENTRY(7, m_szConstraintCatalog)
COLUMN_ENTRY(8, m_szConstraintSchema)
COLUMN_ENTRY(9, m_szConstraintName)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CConstraintColumnUsageInfo
class CConstraintTableUsageInfo
{
public:
// Constructor
CConstraintTableUsageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szConstraintCatalog[129];
TCHAR m_szConstraintSchema[129];
TCHAR m_szConstraintName[129];
// Binding Maps
BEGIN_COLUMN_MAP(CConstraintTableUsageInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_szConstraintCatalog)
COLUMN_ENTRY(5, m_szConstraintSchema)
COLUMN_ENTRY(6, m_szConstraintName)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CForeignKeysInfo
class CForeignKeysInfo
{
public:
// Constructor
CForeignKeysInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szPKTableCatalog[129];
TCHAR m_szPKTableSchema[129];
TCHAR m_szPKTableName[129];
TCHAR m_szPKColumnName[129];
GUID m_guidPKColumn;
ULONG m_nPKColumnPropID;
TCHAR m_szFKTableCatalog[129];
TCHAR m_szFKTableSchema[129];
TCHAR m_szFKTableName[129];
TCHAR m_szFKColumnName[129];
GUID m_guidFKColumn;
ULONG m_nFKColumnPropID;
ULONG m_nOrdinal;
TCHAR m_szUpdateRule[12];
TCHAR m_szDeleteRule[12];
// Binding Info
BEGIN_COLUMN_MAP(CForeignKeysInfo)
COLUMN_ENTRY(1, m_szPKTableCatalog)
COLUMN_ENTRY(2, m_szPKTableSchema)
COLUMN_ENTRY(3, m_szPKTableName)
COLUMN_ENTRY(4, m_szPKColumnName)
COLUMN_ENTRY(5, m_guidPKColumn)
COLUMN_ENTRY(6, m_nPKColumnPropID)
COLUMN_ENTRY(7, m_szFKTableCatalog)
COLUMN_ENTRY(8, m_szFKTableSchema)
COLUMN_ENTRY(9, m_szFKTableName)
COLUMN_ENTRY(10, m_szFKColumnName)
COLUMN_ENTRY(11, m_guidFKColumn)
COLUMN_ENTRY(12, m_nFKColumnPropID)
COLUMN_ENTRY(13, m_nOrdinal)
COLUMN_ENTRY(14, m_szUpdateRule)
COLUMN_ENTRY(15, m_szDeleteRule)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CIndexesInfo
class CIndexesInfo
{
public:
// Constructors
CIndexesInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szIndexCatalog[129];
TCHAR m_szIndexSchema[129];
TCHAR m_szIndexName[129];
VARIANT_BOOL m_bPrimaryKey;
VARIANT_BOOL m_bUnique;
VARIANT_BOOL m_bClustered;
USHORT m_nType;
LONG m_nFillFactor;
LONG m_nInitialSize;
LONG m_nNulls;
VARIANT_BOOL m_bSortBookmarks;
VARIANT_BOOL m_bAutoUpdate;
LONG m_nNullCollation;
ULONG m_nOrdinalPosition;
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
SHORT m_nCollation;
LONG m_nCardinality;
LONG m_nPages;
TCHAR m_szFilterCondition[129];
// Binding Maps
BEGIN_COLUMN_MAP(CIndexesInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_szIndexCatalog)
COLUMN_ENTRY(5, m_szIndexSchema)
COLUMN_ENTRY(6, m_szIndexName)
COLUMN_ENTRY(7, m_bPrimaryKey)
COLUMN_ENTRY(8, m_bUnique)
COLUMN_ENTRY(9, m_bClustered)
COLUMN_ENTRY(10, m_nType)
COLUMN_ENTRY(11, m_nFillFactor)
COLUMN_ENTRY(12, m_nInitialSize)
COLUMN_ENTRY(13, m_nNulls)
COLUMN_ENTRY(14, m_bSortBookmarks)
COLUMN_ENTRY(15, m_bAutoUpdate)
COLUMN_ENTRY(16, m_nNullCollation)
COLUMN_ENTRY(17, m_nOrdinalPosition)
COLUMN_ENTRY(18, m_szColumnName)
COLUMN_ENTRY(19, m_guidColumn)
COLUMN_ENTRY(20, m_nColumnPropID)
COLUMN_ENTRY(21, m_nCollation)
COLUMN_ENTRY(22, m_nCardinality)
COLUMN_ENTRY(23, m_nPages)
COLUMN_ENTRY(25, m_szFilterCondition)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CKeyColumnUsageInfo
class CKeyColumnUsageInfo
{
public:
// Constructors
CKeyColumnUsageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szConstraintCatalog[129];
TCHAR m_szConstraintSchema[129];
TCHAR m_szConstraintName[129];
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
ULONG m_nOrdinalPosition;
// Binding Maps
BEGIN_COLUMN_MAP(CKeyColumnUsageInfo)
COLUMN_ENTRY(1, m_szConstraintCatalog)
COLUMN_ENTRY(2, m_szConstraintSchema)
COLUMN_ENTRY(3, m_szConstraintName)
COLUMN_ENTRY(4, m_szTableCatalog)
COLUMN_ENTRY(5, m_szTableSchema)
COLUMN_ENTRY(6, m_szTableName)
COLUMN_ENTRY(7, m_szColumnName)
COLUMN_ENTRY(8, m_guidColumn)
COLUMN_ENTRY(9, m_nColumnPropID)
COLUMN_ENTRY(10, m_nOrdinalPosition)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CPrimaryKeyInfo
class CPrimaryKeyInfo
{
public:
// Constructors
CPrimaryKeyInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
ULONG m_nOrdinal;
// Binding Maps
BEGIN_COLUMN_MAP(CPrimaryKeyInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_szColumnName)
COLUMN_ENTRY(5, m_guidColumn)
COLUMN_ENTRY(6, m_nColumnPropID)
COLUMN_ENTRY(7, m_nOrdinal)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CProcedureColumnInfo
class CProcedureColumnInfo
{
public:
// Constructors
CProcedureColumnInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
ULONG m_nRowsetNumber;
ULONG m_nOrdinalPosition;
VARIANT_BOOL m_bIsNullable;
USHORT m_nDataType;
GUID m_guidType;
ULONG m_nMaxLength;
ULONG m_nOctetLength;
USHORT m_nPrecision;
SHORT m_nScale;
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CProcedureColumnInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szColumnName)
COLUMN_ENTRY(5, m_guidColumn)
COLUMN_ENTRY(6, m_nColumnPropID)
COLUMN_ENTRY(7, m_nRowsetNumber)
COLUMN_ENTRY(8, m_nOrdinalPosition)
COLUMN_ENTRY(9, m_bIsNullable)
COLUMN_ENTRY(10, m_nDataType)
COLUMN_ENTRY(11, m_guidType)
COLUMN_ENTRY(12, m_nMaxLength)
COLUMN_ENTRY(13, m_nOctetLength)
COLUMN_ENTRY(14, m_nPrecision)
COLUMN_ENTRY(15, m_nScale)
COLUMN_ENTRY(16, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CProcedureParameterInfo
class CProcedureParameterInfo
{
public:
// Constructors
CProcedureParameterInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szParameterName[129];
USHORT m_nOrdinalPosition;
USHORT m_nType;
VARIANT_BOOL m_bHasDefault;
TCHAR m_szDefault[129];
VARIANT_BOOL m_bIsNullable;
USHORT m_nDataType;
ULONG m_nMaxLength;
ULONG m_nOctetLength;
USHORT m_nPrecision;
SHORT m_nScale;
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CProcedureParameterInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szParameterName)
COLUMN_ENTRY(5, m_nOrdinalPosition)
COLUMN_ENTRY(6, m_nType)
COLUMN_ENTRY(7, m_bHasDefault)
COLUMN_ENTRY(8, m_szDefault)
COLUMN_ENTRY(9, m_bIsNullable)
COLUMN_ENTRY(10, m_nDataType)
COLUMN_ENTRY(11, m_nMaxLength)
COLUMN_ENTRY(12, m_nOctetLength)
COLUMN_ENTRY(13, m_nPrecision)
COLUMN_ENTRY(14, m_nScale)
COLUMN_ENTRY(15, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CProcedureInfo
class CProcedureInfo
{
public:
// Constructors
CProcedureInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
SHORT m_nType;
TCHAR m_szDefinition[129];
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CProcedureInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_nType)
COLUMN_ENTRY(5, m_szDefinition)
COLUMN_ENTRY(6, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CProviderTypeInfo
class CProviderTypeInfo
{
public:
// Constructors
CProviderTypeInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTypeName[129];
USHORT m_nDataType;
ULONG m_nColumnSize;
TCHAR m_szLiteralPrefix[129];
TCHAR m_szLiteralSuffix[129];
TCHAR m_szCreateParams[129];
VARIANT_BOOL m_bIsNullable;
VARIANT_BOOL m_bCaseSensitive;
ULONG m_nSearchable;
VARIANT_BOOL m_bUnsignedAttribute;
VARIANT_BOOL m_bFixedPrecScale;
VARIANT_BOOL m_bAutoUniqueValue;
TCHAR m_szLocalTypeName[129];
SHORT m_nMinScale;
SHORT m_nMaxScale;
GUID m_guidType;
TCHAR m_szTypeLib[129];
TCHAR m_szVersion[129];
VARIANT_BOOL m_bIsLong;
VARIANT_BOOL m_bBestMatch;
// Binding Maps
BEGIN_COLUMN_MAP(CProviderTypeInfo)
COLUMN_ENTRY(1, m_szTypeName)
COLUMN_ENTRY(2, m_nDataType)
COLUMN_ENTRY(3, m_nColumnSize)
COLUMN_ENTRY(4, m_szLiteralPrefix)
COLUMN_ENTRY(5, m_szLiteralSuffix)
COLUMN_ENTRY(6, m_szCreateParams)
COLUMN_ENTRY(7, m_bIsNullable)
COLUMN_ENTRY(8, m_bCaseSensitive)
COLUMN_ENTRY(9, m_nSearchable)
COLUMN_ENTRY(10, m_bUnsignedAttribute)
COLUMN_ENTRY(11, m_bFixedPrecScale)
COLUMN_ENTRY(12, m_bAutoUniqueValue)
COLUMN_ENTRY(13, m_szLocalTypeName)
COLUMN_ENTRY(14, m_nMinScale)
COLUMN_ENTRY(15, m_nMaxScale)
COLUMN_ENTRY(16, m_guidType)
COLUMN_ENTRY(17, m_szTypeLib)
COLUMN_ENTRY(18, m_szVersion)
COLUMN_ENTRY(19, m_bIsLong)
COLUMN_ENTRY(20, m_bBestMatch)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CReferentialConstraintInfo
class CReferentialConstraintInfo
{
public:
// Constructors
CReferentialConstraintInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szUniqueCatalog[129];
TCHAR m_szUniqueSchema[129];
TCHAR m_szUniqueName[129];
TCHAR m_szMatchOption[8];
TCHAR m_szUpdateRule[12];
TCHAR m_szDeleteRule[12];
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CReferentialConstraintInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szUniqueCatalog)
COLUMN_ENTRY(5, m_szUniqueSchema)
COLUMN_ENTRY(6, m_szUniqueName)
COLUMN_ENTRY(7, m_szMatchOption)
COLUMN_ENTRY(8, m_szUpdateRule)
COLUMN_ENTRY(9, m_szDeleteRule)
COLUMN_ENTRY(10, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CSchemataInfo
class CSchemataInfo
{
public:
// Constructors
CSchemataInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szName[129];
TCHAR m_szOwner[129];
TCHAR m_szCharCatalog[129];
TCHAR m_szCharSchema[129];
TCHAR m_szCharName[129];
// Binding Maps
BEGIN_COLUMN_MAP(CSchemataInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szName)
COLUMN_ENTRY(3, m_szOwner)
COLUMN_ENTRY(4, m_szCharCatalog)
COLUMN_ENTRY(5, m_szCharSchema)
COLUMN_ENTRY(6, m_szCharName)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CSQLLangugageInfo
class CSQLLanguageInfo
{
public:
// Constructors
CSQLLanguageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szSource[10];
TCHAR m_szYear[5];
TCHAR m_szConformance[13];
TCHAR m_szIntegrity[4];
TCHAR m_szImplementation[24];
TCHAR m_szBindingStyle[10];
TCHAR m_szProgrammingLanguage[10];
// Binding Maps
BEGIN_COLUMN_MAP(CSQLLanguageInfo)
COLUMN_ENTRY(1, m_szSource)
COLUMN_ENTRY(2, m_szYear)
COLUMN_ENTRY(3, m_szConformance)
COLUMN_ENTRY(4, m_szIntegrity)
COLUMN_ENTRY(5, m_szImplementation)
COLUMN_ENTRY(6, m_szBindingStyle)
COLUMN_ENTRY(7, m_szProgrammingLanguage)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CStatisticInfo
class CStatisticInfo
{
public:
// Constructors
CStatisticInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
LONG m_nCardinality;
// Binding Maps
BEGIN_COLUMN_MAP(CStatisticInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_nCardinality)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CTableConstraintInfo
class CTableConstraintInfo
{
public:
// Constructors
CTableConstraintInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szType[12];
VARIANT_BOOL m_bIsDeferrable;
VARIANT_BOOL m_bInitiallyDeferred;
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CTableConstraintInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szTableCatalog)
COLUMN_ENTRY(5, m_szTableSchema)
COLUMN_ENTRY(6, m_szTableName)
COLUMN_ENTRY(7, m_szType)
COLUMN_ENTRY(8, m_bIsDeferrable)
COLUMN_ENTRY(9, m_bInitiallyDeferred)
COLUMN_ENTRY(10, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CTablePrivilegeInfo
class CTablePrivilegeInfo
{
public:
// Constructors
CTablePrivilegeInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szGrantor[129];
TCHAR m_szGrantee[129];
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szType[12];
VARIANT_BOOL m_bIsGrantable;
// Binding Maps
BEGIN_COLUMN_MAP(CTablePrivilegeInfo)
COLUMN_ENTRY(1, m_szGrantor)
COLUMN_ENTRY(2, m_szGrantee)
COLUMN_ENTRY(3, m_szCatalog)
COLUMN_ENTRY(4, m_szSchema)
COLUMN_ENTRY(5, m_szName)
COLUMN_ENTRY(6, m_szType)
COLUMN_ENTRY(7, m_bIsGrantable)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CTableInfo
class CTableInfo
{
public:
// Constructors
CTableInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szType[129];
GUID m_guidTable;
TCHAR m_szDescription[129];
// Binding Map
BEGIN_COLUMN_MAP(CTableInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szType)
COLUMN_ENTRY(5, m_guidTable)
COLUMN_ENTRY(6, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CTranslationInfo
class CTranslationInfo
{
public:
// Constructors
CTranslationInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szSourceCatalog[129];
TCHAR m_szSourceSchema[129];
TCHAR m_szSourceName[129];
TCHAR m_szTargetCatalog[129];
TCHAR m_szTargetSchema[129];
TCHAR m_szTargetName[129];
// Binding Maps
BEGIN_COLUMN_MAP(CTranslationInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szSourceCatalog)
COLUMN_ENTRY(5, m_szSourceSchema)
COLUMN_ENTRY(6, m_szSourceName)
COLUMN_ENTRY(7, m_szTargetCatalog)
COLUMN_ENTRY(8, m_szTargetSchema)
COLUMN_ENTRY(9, m_szTargetName)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CUsagePrivilegeInfo
class CUsagePrivilegeInfo
{
public:
// Constructors
CUsagePrivilegeInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szGrantor[129];
TCHAR m_szGrantee[129];
TCHAR m_szObjectCatalog[129];
TCHAR m_szObjectSchema[129];
TCHAR m_szObjectName[129];
TCHAR m_szObjectType[12];
TCHAR m_szPrivilegeType[6];
VARIANT_BOOL m_bIsGrantable;
// Binding Maps
BEGIN_COLUMN_MAP(CUsagePrivilegeInfo)
COLUMN_ENTRY(1, m_szGrantor)
COLUMN_ENTRY(2, m_szGrantee)
COLUMN_ENTRY(3, m_szObjectCatalog)
COLUMN_ENTRY(4, m_szObjectSchema)
COLUMN_ENTRY(5, m_szObjectName)
COLUMN_ENTRY(6, m_szObjectType)
COLUMN_ENTRY(7, m_szPrivilegeType)
COLUMN_ENTRY(8, m_bIsGrantable)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CViewColumnUsageInfo
class CViewColumnUsageInfo
{
public:
// Constructors
CViewColumnUsageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szColumnName[129];
GUID m_guidColumn;
ULONG m_nColumnPropID;
// Binding Maps
BEGIN_COLUMN_MAP(CViewColumnUsageInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szTableCatalog)
COLUMN_ENTRY(5, m_szTableSchema)
COLUMN_ENTRY(6, m_szTableName)
COLUMN_ENTRY(7, m_szColumnName)
COLUMN_ENTRY(8, m_guidColumn)
COLUMN_ENTRY(9, m_nColumnPropID)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CViewTableUsageInfo
class CViewTableUsageInfo
{
public:
// Constructors
CViewTableUsageInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szCatalog[129];
TCHAR m_szSchema[129];
TCHAR m_szName[129];
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
// Binding Maps
BEGIN_COLUMN_MAP(CViewTableUsageInfo)
COLUMN_ENTRY(1, m_szCatalog)
COLUMN_ENTRY(2, m_szSchema)
COLUMN_ENTRY(3, m_szName)
COLUMN_ENTRY(4, m_szTableCatalog)
COLUMN_ENTRY(5, m_szTableSchema)
COLUMN_ENTRY(6, m_szTableName)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// class CViewInfo
class CViewInfo
{
public:
// Constructors
CViewInfo()
{
memset(this, 0, sizeof(*this));
}
// Attributes
TCHAR m_szTableCatalog[129];
TCHAR m_szTableSchema[129];
TCHAR m_szTableName[129];
TCHAR m_szDefinition[129];
VARIANT_BOOL m_bCheckOption;
VARIANT_BOOL m_bIsUpdatable;
TCHAR m_szDescription[129];
// Binding Maps
BEGIN_COLUMN_MAP(CViewInfo)
COLUMN_ENTRY(1, m_szTableCatalog)
COLUMN_ENTRY(2, m_szTableSchema)
COLUMN_ENTRY(3, m_szTableName)
COLUMN_ENTRY(4, m_szDefinition)
COLUMN_ENTRY(5, m_bCheckOption)
COLUMN_ENTRY(6, m_bIsUpdatable)
COLUMN_ENTRY(7, m_szDescription)
END_COLUMN_MAP()
};
///////////////////////////////////////////////////////////////////////////
// typedefs
typedef CRestrictions<CAccessor<CAssertionInfo>, 3, &DBSCHEMA_ASSERTIONS> CAssertions;
typedef CRestrictions<CAccessor<CCatalogInfo>, 1, &DBSCHEMA_CATALOGS > CCatalogs;
typedef CRestrictions<CAccessor<CCharacterSetInfo>, 3, &DBSCHEMA_CHARACTER_SETS> CCharacterSets;
typedef CRestrictions<CAccessor<CCheckConstraintInfo>, 3, &DBSCHEMA_CHECK_CONSTRAINTS> CCheckConstraints;
typedef CRestrictions<CAccessor<CCollationInfo>, 3, &DBSCHEMA_COLLATIONS> CCollations;
typedef CRestrictions<CAccessor<CColumnDomainUsageInfo>, 4, &DBSCHEMA_COLUMN_DOMAIN_USAGE> CColumnDomainUsage;
typedef CRestrictions<CAccessor<CColumnPrivilegeInfo>, 6, &DBSCHEMA_COLUMN_PRIVILEGES> CColumnPrivileges;
typedef CRestrictions<CAccessor<CColumnsInfo>, 4, &DBSCHEMA_COLUMNS> CColumns;
typedef CRestrictions<CAccessor<CConstraintColumnUsageInfo>,4, &DBSCHEMA_CONSTRAINT_COLUMN_USAGE> CConstraintColumnUsage;
typedef CRestrictions<CAccessor<CConstraintTableUsageInfo>, 3, &DBSCHEMA_CONSTRAINT_TABLE_USAGE> CConstraintTableUsage;
typedef CRestrictions<CAccessor<CForeignKeysInfo>, 6, &DBSCHEMA_FOREIGN_KEYS> CForeignKeys;
typedef CRestrictions<CAccessor<CIndexesInfo>, 5, &DBSCHEMA_INDEXES> CIndexes;
typedef CRestrictions<CAccessor<CKeyColumnUsageInfo>, 7, &DBSCHEMA_KEY_COLUMN_USAGE> CKeyColumnUsage;
typedef CRestrictions<CAccessor<CPrimaryKeyInfo>, 3, &DBSCHEMA_PRIMARY_KEYS> CPrimaryKeys;
typedef CRestrictions<CAccessor<CProcedureColumnInfo>, 4, &DBSCHEMA_PROCEDURE_COLUMNS> CProcedureColumns;
typedef CRestrictions<CAccessor<CProcedureParameterInfo>, 4, &DBSCHEMA_PROCEDURE_PARAMETERS> CProcedureParameters;
typedef CRestrictions<CAccessor<CProcedureInfo>, 4, &DBSCHEMA_PROCEDURES> CProcedures;
typedef CRestrictions<CAccessor<CProviderTypeInfo>, 2, &DBSCHEMA_PROVIDER_TYPES> CProviderTypes;
typedef CRestrictions<CAccessor<CReferentialConstraintInfo>,3, &DBSCHEMA_REFERENTIAL_CONSTRAINTS> CReferentialConstraints;
typedef CRestrictions<CAccessor<CSchemataInfo>, 3, &DBSCHEMA_SCHEMATA> CSchemata;
typedef CRestrictions<CAccessor<CSQLLanguageInfo>, 0, &DBSCHEMA_SQL_LANGUAGES> CSQLLanguages;
typedef CRestrictions<CAccessor<CStatisticInfo>, 3, &DBSCHEMA_STATISTICS> CStatistics ;
typedef CRestrictions<CAccessor<CTableConstraintInfo>, 7, &DBSCHEMA_TABLE_CONSTRAINTS> CTableConstraints;
typedef CRestrictions<CAccessor<CTablePrivilegeInfo>, 5, &DBSCHEMA_TABLE_PRIVILEGES> CTablePrivileges;
typedef CRestrictions<CAccessor<CTableInfo>, 4, &DBSCHEMA_TABLES> CTables;
typedef CRestrictions<CAccessor<CTranslationInfo>, 3, &DBSCHEMA_TRANSLATIONS> CTranslations;
typedef CRestrictions<CAccessor<CUsagePrivilegeInfo>, 6, &DBSCHEMA_USAGE_PRIVILEGES> CUsagePrivileges;
typedef CRestrictions<CAccessor<CViewColumnUsageInfo>, 3, &DBSCHEMA_VIEW_COLUMN_USAGE> CViewColumnUsage;
typedef CRestrictions<CAccessor<CViewTableUsageInfo>, 3, &DBSCHEMA_VIEW_TABLE_USAGE> CViewTableUsage;
typedef CRestrictions<CAccessor<CViewInfo>, 3, &DBSCHEMA_VIEWS> CViews;
///////////////////////////////////////////////////////////////////////////
}; //namespace ATL
#endif // __ATLDBSCH_H__
///////////////////////////////////////////////////////////////////////////