Macros for OLE DB Provider Templates
The OLE DB Templates Provider macros offer functionality in the following categories:
Property Set Map Macros
Name | Description |
---|---|
BEGIN_PROPERTY_SET | Marks the beginning of a property set. |
BEGIN_PROPERTY_SET_EX | Marks the beginning of a property set. |
BEGIN_PROPSET_MAP | Marks the beginning of a property set that can be hidden or defined outside the scope of the provider. |
CHAIN_PROPERTY_SET | Chains property groups together. |
END_PROPERTY_SET | Marks the end of a property set. |
END_PROPSET_MAP | Marks the end of a property set map. |
PROPERTY_INFO_ENTRY | Sets a specific property in a property set to a default value. |
PROPERTY_INFO_ENTRY_EX | Sets a specific property in a property set to a value supplied by you. Also enables you to set flags and options. |
PROPERTY_INFO_ENTRY_VALUE | Sets a specific property in a property set to a value supplied by you. |
Column Map Macros
Name | Description |
---|---|
BEGIN_PROVIDER_COLUMN_MAP | Marks the beginning of the provider column map entries. |
END_PROVIDER_COLUMN_MAP | Marks the end of the provider column map entries. |
PROVIDER_COLUMN_ENTRY | Represents a specific column supported by the provider. |
PROVIDER_COLUMN_ENTRY_FIXED | Represents a specific column supported by the provider. You can specify the column data type. |
PROVIDER_COLUMN_ENTRY_GN | Represents a specific column supported by the provider. You can specify the column's size, data type, precision, scale, and schema rowset GUID. |
PROVIDER_COLUMN_ENTRY_LENGTH | Represents a specific column supported by the provider. You can specify the column size. |
PROVIDER_COLUMN_ENTRY_STR | Represents a specific column supported by the provider. It assumes the column type is a string. |
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH | Represents a specific column supported by the provider. Like PROVIDER_COLUMN_ENTRY_LENGTH, but also allows you to specify the column's data type as well as size. |
PROVIDER_COLUMN_ENTRY_WSTR | Represents a specific column supported by the provider. It assumes the column type is a Unicode character string. |
Schema Rowset Macros
Name | Description |
---|---|
BEGIN_SCHEMA_MAP | Marks the beginning of a schema map. |
END_SCHEMA_MAP | Marks the end of a schema map. |
SCHEMA_ENTRY | Associates a GUID with a class. |
Requirements
Header: atldb.h
BEGIN_PROPERTY_SET
Marks the beginning of a property set in a property set map.
Syntax
BEGIN_PROPERTY_SET(guid)
Parameters
guid
[in] The property GUID.
Example
See BEGIN_PROPSET_MAP.
BEGIN_PROPERTY_SET_EX
Marks the beginning of a property set in a property set map.
Syntax
BEGIN_PROPERTY_SET_EX(guid, flags)
Parameters
guid
[in] The property GUID.
flags
[in] UPROPSET_HIDDEN for any property sets you do not wish to expose, or UPROPSET_PASSTHROUGH for a provider exposing properties defined outside the scope of the provider.
Example
See BEGIN_PROPSET_MAP.
BEGIN_PROPSET_MAP
Marks the beginning of the property set map entries.
Syntax
BEGIN_PROPSET_MAP(Class)
Parameters
Class
[in] The class in which this property set is specified. A property set can be specified in the following OLE DB objects:
Example
Here is a sample property set map:
BEGIN_PROPSET_MAP(CCustomSource)
BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
PROPERTY_INFO_ENTRY(ACTIVESESSIONS)
PROPERTY_INFO_ENTRY(DATASOURCEREADONLY)
PROPERTY_INFO_ENTRY(BYREFACCESSORS)
PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY)
PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER)
PROPERTY_INFO_ENTRY(DSOTHREADMODEL)
PROPERTY_INFO_ENTRY(SUPPORTEDTXNISOLEVELS)
PROPERTY_INFO_ENTRY(USERNAME)
END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
BEGIN_PROPERTY_SET(DBPROPSET_DBINIT)
PROPERTY_INFO_ENTRY(AUTH_PASSWORD)
PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO)
PROPERTY_INFO_ENTRY(AUTH_USERID)
PROPERTY_INFO_ENTRY(INIT_DATASOURCE)
PROPERTY_INFO_ENTRY(INIT_HWND)
PROPERTY_INFO_ENTRY(INIT_LCID)
PROPERTY_INFO_ENTRY(INIT_LOCATION)
PROPERTY_INFO_ENTRY(INIT_MODE)
PROPERTY_INFO_ENTRY(INIT_PROMPT)
PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING)
PROPERTY_INFO_ENTRY(INIT_TIMEOUT)
END_PROPERTY_SET(DBPROPSET_DBINIT)
CHAIN_PROPERTY_SET(CCustomSession)
CHAIN_PROPERTY_SET(CCustomCommand)
END_PROPSET_MAP()
CHAIN_PROPERTY_SET
This macro chains property groups together.
Syntax
CHAIN_PROPERTY_SET(ChainClass)
Parameters
ChainClass
[in] The name of the class to chain properties for. This is a class generated by the ATL Project Wizard that already contains a map (such as a session, command, or data source object class).
Remarks
You can chain a property set from another class to your own class, then access the properties directly from your class.
Caution
Use this macro sparingly. Improper use can cause a consumer to fail the OLE DB conformance tests.
END_PROPERTY_SET
Marks the end of a property set.
Syntax
END_PROPERTY_SET(guid)
Parameters
guid
[in] The property GUID.
Example
See BEGIN_PROPSET_MAP.
END_PROPSET_MAP
Marks the end of property set map entries.
Syntax
END_PROPSET_MAP()
Example
See BEGIN_PROPSET_MAP.
PROPERTY_INFO_ENTRY
Represents a specific property in a property set.
Syntax
PROPERTY_INFO_ENTRY(dwPropID)
Parameters
dwPropID
[in] A DBPROPID value that can be used in conjunction with the property set GUID to identify a property.
Remarks
This macro sets the property value of type DWORD
to a default value defined in ATLDB.H. To set the property to a value of your choosing, use PROPERTY_INFO_ENTRY_VALUE. To set the VARTYPE
and DBPROPFLAGS for the property at the same time, use PROPERTY_INFO_ENTRY_EX.
Example
See BEGIN_PROPSET_MAP.
PROPERTY_INFO_ENTRY_EX
Represents a specific property in a property set.
Syntax
PROPERTY_INFO_ENTRY_EX(dwPropID, vt, dwFlags, value, options)
Parameters
dwPropID
[in] A DBPROPID value that can be used in conjunction with the property set GUID to identify a property.
vt
[in] The VARTYPE
of this property entry. (Defined in wtypes.h)
dwFlags
[in] A DBPROPFLAGS value describing this property entry.
value
[in] The property value of type DWORD
.
options
Either DBPROPOPTIONS_REQUIRED or DBPROPOPTIONS_SETIFCHEAP. Normally, a provider does not need to set options since it is set by the consumer.
Remarks
With this macro, you can directly specify the property value of type DWORD
as well as options and flags. To merely set a property to a default value defined in ATLDB.H, use PROPERTY_INFO_ENTRY. To set a property to a value of your choice, without setting options or flags on it, use PROPERTY_INFO_ENTRY_VALUE.
Example
See BEGIN_PROPSET_MAP.
PROPERTY_INFO_ENTRY_VALUE
Represents a specific property in a property set.
Syntax
PROPERTY_INFO_ENTRY_VALUE(dwPropID, value)
Parameters
dwPropID
[in] A DBPROPID value that can be used in conjunction with the property set GUID to identify a property.
value
[in] The property value of type DWORD
.
Remarks
With this macro, you can directly specify the property value of type DWORD
. To set the property to default value defined in ATLDB.H, use PROPERTY_INFO_ENTRY. To set the value, flags, and options for the property, use PROPERTY_INFO_ENTRY_EX.
Example
See BEGIN_PROPSET_MAP.
BEGIN_PROVIDER_COLUMN_MAP
Marks the beginning of the provider column map entries.
Syntax
BEGIN_PROVIDER_COLUMN_MAP(theClass)
Parameters
theClass
[in] The name of the class this map belongs to.
Example
Here is a sample provider column map:
BEGIN_PROVIDER_COLUMN_MAP(CCustomWindowsFile)
PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
END_PROVIDER_COLUMN_MAP
Marks the end of the provider column map entries.
Syntax
END_PROVIDER_COLUMN_MAP()
Example
See BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY (name, ordinal, member)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
member
[in] The member variable in dataClass
corresponding to the column.
PROVIDER_COLUMN_ENTRY_FIXED
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY_FIXED(name, ordinal, dbtype, member)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
dbtype
[in] The data type in DBTYPE.
member
[in] The member variable in dataClass
that stores the data.
Remarks
Allows you to specify the column data type.
Example
See BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY_GN
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY_GN (name, ordinal, flags, colSize, dbtype, precision, scale, guid)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
flags
[in] Specifies how data is returned. See the dwFlags
description in DBBINDING Structures.
colSize
[in] The column size.
dbtype
[in] Indicates the data type of the value. See the wType
description in DBBINDING Structures.
precision
[in] Indicates the precision to use when getting data if dbType is DBTYPE_NUMERIC or DBTYPE_DECIMAL. See the bPrecision
description in DBBINDING Structures.
scale
[in] Indicates the scale to use when getting data if dbType is DBTYPE_NUMERIC or DBTYPE_DECIMAL. See the bScale
description in DBBINDING Structures.
guid
A schema rowset GUID. See IDBSchemaRowset in the OLE DB Programmer's Reference for a list of schema rowsets and their GUIDs.
Remarks
Allows you to specify the column's size, data type, precision, scale, and schema rowset GUID.
PROVIDER_COLUMN_ENTRY_LENGTH
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY_LENGTH(name, ordinal, size, member)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
size
[in] The column size in bytes.
member
[in] The member variable in dataClass
that stores the column data.
Remarks
Allows you to specify the column size.
Example
See BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY_STR
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY_STR(name, ordinal, member)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
member
[in] The member variable in the data class that stores the data.
Remarks
Use this macro when the column data is assumed to be DBTYPE_STR.
Example
See BEGIN_PROVIDER_COLUMN_MAP.
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY_TYPE_LENGTH(name, ordinal, dbtype, size, member)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
dbtype
[in] The data type in DBTYPE.
size
[in] The column size in bytes.
member
[in] The member variable in the data class that stores the data.
Remarks
Similar to PROVIDER_COLUMN_ENTRY_LENGTH but also allows you to specify the column's data type as well as size.
PROVIDER_COLUMN_ENTRY_WSTR
Represents a specific column supported by the provider.
Syntax
PROVIDER_COLUMN_ENTRY_WSTR(name, ordinal, member)
Parameters
name
[in] The column name.
ordinal
[in] The column number. Unless the column is a Bookmark column, the column number must not be 0.
member
[in] The member variable in the data class that stores the data.
Remarks
Use this macro when the column data is a null terminated Unicode character string, DBTYPE_WSTR.
BEGIN_SCHEMA_MAP
Denotes the beginning of a schema map.
Syntax
BEGIN_SCHEMA_MAP(SchemaClass);
Parameters
SchemaClass
The class that contains the MAP. Typically this will be the session class.
Remarks
See IDBSchemaRowset in the Windows SDK for more information about schema rowsets.
END_SCHEMA_MAP
Denotes the end of the schema map.
Syntax
END_SCHEMA_MAP()
Remarks
For more information, see IDBSchemaRowsetImpl Class.
SCHEMA_ENTRY
Associates a GUID with a class.
Syntax
SCHEMA_ENTRY(guid,
rowsetClass);
Parameters
guid
A schema rowset GUID. See IDBSchemaRowset in the OLE DB Programmer's Reference for a list of schema rowsets and their GUIDs.
rowsetClass
The class that will be created to represent the schema rowset.
Remarks
IDBSchemaRowsetImpl can then query the map for a list of GUIDs, or it can create a rowset if it is given a GUID. The schema rowset IDBSchemaRowsetImpl
creates is similar to a standard CRowsetImpl
-derived class, except it must provide an Execute
method that has the following signature:
HRESULT Execute (LONG* pcRowsAffected,
ULONG cRestrictions,
const VARIANT* rgRestrictions);
This Execute
function populates the rowset's data. The ATL Project Wizard creates, as described in IDBSchemaRowset in the OLE DB Programmer's Reference, three initial schema rowsets in the project for each of the three mandatory OLE DB schemas:
DBSCHEMA_TABLES
DBSCHEMA_COLUMNS
DBSCHEMA_PROVIDER_TYPES
The wizard also adds three corresponding entries in the schema map. See Creating an OLE DB Template Provider for more information about using the wizard to create a provider.
See also
OLE DB Provider Templates
OLE DB Provider Template Architecture
Creating an OLE DB Provider
OLE DB Provider Templates Reference
Macros for OLE DB Provider Templates