CDataSource Class
Corresponds to an OLE DB data source object, which represents a connection through a provider to a data source.
Syntax
class CDataSource
Requirements
Header: atldbcli.h
Members
Methods
Name | Description |
---|---|
Close | Closes the connection. |
GetInitializationString | Retrieves the initialization string of the data source that is currently open. |
GetProperties | Gets the values of properties currently set for the connected data source. |
GetProperty | Gets the value of a single property currently set for the connected data source. |
Open | Creates a connection to a provider (data source) using either a CLSID , ProgID , or a CEnumerator moniker provided by the caller. |
OpenFromFileName | Opens a data source from a file specified by the user-supplied file name. |
OpenFromInitializationString | Opens the data source specified by an initialization string. |
OpenWithPromptFileName | Allows the user to select a previously created data link file to open the corresponding data source. |
OpenWithServiceComponents | Opens a data source object using the Data Link dialog box. |
Remarks
One or more database sessions can be created for a single connection. These sessions are represented by CSession
. You must call CDataSource::Open to open the connection before creating a session with CSession::Open
.
For an example of how to use CDataSource
, see the CatDB sample.
CDataSource::Close
Closes the connection by releasing the m_spInit
pointer.
Syntax
void Close() throw();
CDataSource::GetInitializationString
Retrieves the initialization string of a data source that is currently open.
Syntax
HRESULT GetInitializationString(BSTR* pInitializationString,
bool bIncludePassword = false) throw();
Parameters
pInitializationString
[out] A pointer to the initialization string.
bIncludePassword
[in] true
if string includes a password; otherwise false
.
Return Value
A standard HRESULT.
Remarks
The resulting initialization string can be used to later reopen this data source connection.
CDataSource::GetProperties
Returns the property information requested for the connected data source object.
Syntax
HRESULT GetProperties(ULONG ulPropIDSets,
constDBPROPIDSET* pPropIDSet,
ULONG* pulPropertySets,
DBPROPSET** ppPropsets) const throw();
Parameters
See IDBProperties::GetProperties in the OLE DB Programmer's Reference in the Windows SDK.
Return Value
A standard HRESULT.
Remarks
To get a single property, use GetProperty.
CDataSource::GetProperty
Returns the value of a specified property for the connected data source object.
Syntax
HRESULT GetProperty(const GUID& guid,
DBPROPID propid,
VARIANT* pVariant) const throw();
Parameters
guid
[in] A GUID identifying the property set for which to return the property.
propid
[in] Property ID for the property to return.
pVariant
[out] A pointer to the variant where GetProperty
returns the value of the property.
Return Value
A standard HRESULT.
Remarks
To get multiple properties, use GetProperties.
CDataSource::Open
Opens a connection to a data source using a CLSID
, ProgID
, or CEnumerator
moniker or prompts the user with a locator dialog box.
Syntax
HRESULT Open(const CLSID& clsid,
DBPROPSET* pPropSet = NULL,
ULONG nPropertySets = 1) throw();
HRESULT Open(const CLSID& clsid,
LPCTSTR pName,
LPCTSTR pUserName = NULL,
LPCTSTR pPassword = NULL,
long nInitMode = 0) throw();HRESULT Open(LPCTSTR szProgID,
DBPROPSET* pPropSet = NULL,
ULONG nPropertySets = 1) throw();HRESULT Open(LPCTSTR szProgID,
LPCTSTR pName, LPCTSTR pUserName = NULL,
LPCTSTR pPassword = NULL,
long nInitMode = 0) throw();
HRESULT Open(const CEnumerator& enumerator,
DBPROPSET* pPropSet = NULL,
ULONG nPropertySets = 1) throw();
HRESULT Open(const CEnumerator& enumerator,
LPCTSTR pName,
LPCTSTR pUserName = NULL,
LPCTSTR pPassword = NULL,
long nInitMode = 0) throw();
HRESULT Open(HWND hWnd = GetActiveWindow(),
DBPROMPTOPTIONS dwPromptOptions = DBPROMPTOPTIONS_WIZARDSHEET) throw();
HRESULT Open(LPCWSTR szProgID,
DBPROPSET* pPropSet = NULL,
ULONG nPropertySets = 1) throw();
HRESULT Open(LPCSTR szProgID,
LPCTSTR pName,LPCTSTR pUserName = NULL,
LPCTSTR pPassword = NULL,
long nInitMode = 0) throw();
Parameters
clsid
[in] The CLSID
of the data provider.
pPropSet
[in] A pointer to an array of DBPROPSET structures containing properties and values to be set. See Property Sets and Property Groups in the OLE DB Programmer's Reference in the Windows SDK.
nPropertySets
[in] The number of DBPROPSET structures passed in the pPropSet argument.
pName
[in] The name of the database to which to connect.
pUserName
[in] The name of the user.
pPassword
[in] The user's password.
nInitMode
[in] Database initialization mode. See Initialization Propertiesin the OLE DB Programmer's Reference in the Windows SDK for a list of valid initialization modes. If nInitMode is zero, no initialization mode is included in the property set used to open the connection.
szProgID
[in] A program identifier.
enumerator
[in] A CEnumerator object used to obtain a moniker for opening the connection when the caller does not specify a CLSID
.
hWnd
[in] Handle to the window that is to be the parent of the dialog box. Using the function overload that uses the hWnd parameter will automatically invoke Service Components; see Remarks for details.
dwPromptOptions
[in] Determines the style of locator dialog box to display. See Msdasc.h for possible values.
Return Value
A standard HRESULT.
Remarks
The method overload that uses the hWnd parameter opens a data source object with the service components in oledb32.dll; this DLL contains the implementation of Service Components features such as Resource Pooling, Automatic Transaction Enlistment, and so on. For more information, see the OLE DB reference in the OLE DB Programmer's Guide.
The method overloads that do not use the hWnd parameter open a data source object without using the service components in oledb32.dll. A CDataSource object opened with these function overloads will be unable to utilize any of the functionality of Service Components.
Example
The following code shows how to open a Jet 4.0 data source with OLE DB Templates. You treat the Jet data source as an OLE DB data source. However, your call to Open
needs two property sets: one for DBPROPSET_DBINIT and the other for DBPROPSET_JETOLEDB_DBINIT, so that you can set DBPROP_JETOLEDB_DATABASEPASSWORD.
CDBPropSet rgDBPropSet[2]; // Declare two property sets;
// set properties elsewhere as appropriate.
hr = m_DataSource.Open(szProgId, rgDBPropSet, 2);
CDataSource::OpenFromFileName
Opens a data source from a file specified by the user-supplied file name.
Syntax
HRESULT OpenFromFileName(LPCOLESTR szFileName) throw();
Parameters
szFileName
[in] The name of a file, usually a data source connection (.UDL) file.
For more information about data link files (.udl files), see Data Link API Overview in the Windows SDK.
Return Value
A standard HRESULT.
Remarks
This method opens a data source object using the service components in oledb32.dll; this DLL contains the implementation of Service Components features such as Resource Pooling, Automatic Transaction Enlistment, and so on. For more information, see the OLE DB reference in the OLE DB Programmer's Guide.
CDataSource::OpenFromInitializationString
Opens a data source specified by the user-supplied initialization string.
Syntax
HRESULT OpenFromInitializationString(LPCOLESTR szInitializationString,
bool fPromptForInfo= false) throw();
Parameters
szInitializationString
[in] The initialization string.
fPromptForInfo
[in] If this argument is set to true
, then OpenFromInitializationString
will set the DBPROP_INIT_PROMPT property to DBPROMPT_COMPLETEREQUIRED, which specifies that the user be prompted only if more information is needed. This is useful for situations in which the initialization string specifies a database that requires a password, but the string does not contain the password. The user will be prompted for a password (or any other missing information) when trying to connect to the database.
The default value is false
, which specifies that the user never be prompted (sets DBPROP_INIT_PROMPT to DBPROMPT_NOPROMPT).
Return Value
A standard HRESULT.
Remarks
This method opens a data source object using the service components in oledb32.dll; this DLL contains the implementation of Service Components features such as Resource Pooling, Automatic Transaction Enlistment, and so on.
CDataSource::OpenWithPromptFileName
This method prompts the user with a dialog box, then opens a data source using the file specified by the user.
Syntax
HRESULT OpenWithPromptFileName(HWND hWnd = GetActiveWindow( ),
DBPROMPTOPTIONS dwPromptOptions = DBPROMPTOPTIONS_NONE,
LPCOLESTR szInitialDirectory = NULL) throw();
Parameters
hWnd
[in] Handle to the window that is to be the parent of the dialog box.
dwPromptOptions
[in] Determines the style of locator dialog box to display. See Msdasc.h for possible values.
szInitialDirectory
[in] The initial directory to display in the locator dialog box.
Return Value
A standard HRESULT.
Remarks
This method opens a data source object using the service components in oledb32.dll; this DLL contains the implementation of Service Components features such as Resource Pooling, Automatic Transaction Enlistment, and so on. For more information, see the OLE DB reference in the OLE DB Programmer's Guide.
CDataSource::OpenWithServiceComponents
Opens a data source object using the service components in oledb32.dll.
Syntax
HRESULT OpenWithServiceComponents (const CLSID clsid,
DBPROPSET* pPropset = NULL,
ULONG ulPropSets = 1);
HRESULT OpenWithServiceComponents (LPCSTR szProgID,
DBPROPSET* pPropset = NULL,
ULONG ulPropSets = 1);
Parameters
clsid
[in] The CLSID
of a data provider.
szProgID
[in] Program ID of a data provider.
pPropset
[in] A pointer to an array of DBPROPSET structures containing properties and values to be set. See Property Sets and Property Groups in the OLE DB Programmer's Reference in the Windows SDK. If the data source object is initialized, the properties must belong to the Data Source property group. If the same property is specified more than once in pPropset, then which value is used is provider-specific. If ulPropSets is zero, this parameter is ignored.
ulPropSets
[in] The number of DBPROPSET structures passed in the pPropSet argument. If this is zero, the provider ignores pPropset.
Return Value
A standard HRESULT.
Remarks
This method opens a data source object using the service components in oledb32.dll; this DLL contains the implementation of Service Components features such as Resource Pooling, Automatic Transaction Enlistment, and so on. For more information, see the OLE DB reference in the OLE DB Programmer's Guide.
See also
OLE DB Consumer Templates
OLE DB Consumer Templates Reference