CDataSource 類別
對應至 OLE DB 資料來源物件,其表示透過提供者與資料來源的連線。
語法
class CDataSource
需求
標頭檔:atldbcli.h
成員
方法
名稱 | 描述 |
---|---|
關閉 | 關閉連線。 |
GetInitializationString | 擷取目前開啟之資料來源的初始化字串。 |
GetProperties | 取得目前針對所連線之資料來源設定的屬性值。 |
GetProperty | 取得目前針對所連線資料來源設定的單一屬性值。 |
Open | 使用 CLSID 呼叫端提供的 、 ProgID 或 CEnumerator Moniker,建立與提供者(數據源)的連線。 |
OpenFromFileName | 從以使用者提供的檔名指定的檔案,開啟資料來源。 |
OpenFromInitializationString | 開啟以初始化字串指定的資料來源。 |
OpenWithPromptFileName | 允許使用者選取先前建立的資料連結檔案,以開啟對應的資料來源。 |
OpenWithServiceComponents | 使用 [資料連結] 對話方塊開啟資料來源物件。 |
備註
可為單一連線建立一個或多個資料庫工作階段。 這些工作階段是以 CSession
表示。 您必須呼叫 CDataSource::Open 以開啟連接,才能使用 CSession::Open
建立會話。
如需如何使用 CDataSource
的範例,請參閱 CatDB 範例。
CDataSource::Close
釋放 m_spInit
指標來關閉連接。
語法
void Close() throw();
CDataSource::GetInitializationString
擷取目前開啟之數據源的初始化字串。
語法
HRESULT GetInitializationString(BSTR* pInitializationString,
bool bIncludePassword = false) throw();
參數
pInitializationString
[out]初始化字串的指標。
bIncludePassword
[in] true
如果字串包含密碼,則為 ;否則 false
為 。
傳回值
標準 HRESULT。
備註
產生的初始化字串可用來稍後重新開啟此數據源連線。
CDataSource::GetProperties
傳回已連接數據源物件所要求的屬性資訊。
語法
HRESULT GetProperties(ULONG ulPropIDSets,
constDBPROPIDSET* pPropIDSet,
ULONG* pulPropertySets,
DBPROPSET** ppPropsets) const throw();
參數
請參閱 Windows SDK 中 OLE DB 程式設計人員參考中的 IDBProperties::GetProperties。
傳回值
標準 HRESULT。
備註
若要取得單一屬性,請使用 GetProperty。
CDataSource::GetProperty
傳回所連接數據源物件的指定屬性值。
語法
HRESULT GetProperty(const GUID& guid,
DBPROPID propid,
VARIANT* pVariant) const throw();
參數
guid
[in]用來識別要傳回屬性之屬性集的 GUID。
propid
[in]要傳回之屬性的屬性識別碼。
pVariant
[out]變數的指標,其中 GetProperty
會傳回 屬性的值。
傳回值
標準 HRESULT。
備註
若要取得多個屬性,請使用 GetProperties。
CDataSource::Open
使用CLSID
、 或 CEnumerator
Moniker 開啟資料源的連接,ProgID
或使用定位器對話框提示使用者。
語法
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();
參數
clsid
[in] CLSID
資料提供者的 。
pPropSet
[in]DBPROPSET 結構的陣列指標,其中包含要設定的屬性和值。 請參閱 Windows SDK 中 OLE DB 程式設計人員參考中的屬性集和屬性群組。
nPropertySets
[in]在 pPropSet 自變數中傳遞的 DBPROPSET 結構數目。
pName
[in] 要連接的資料庫名稱。
pUserName
[in] 使用者的名稱。
pPassword
[in] 使用者的密碼。
nInitMode
[in] 資料庫初始化模式。 如需有效的初始化模式清單,請參閱 Windows SDK 中 OLE DB 程式設計人員參考中的初始化屬性。 如果 nInitMode 為零,則用來開啟連接的屬性集中不會包含任何初始化模式。
szProgID
[in] 程式識別碼。
列舉程式
[in] CEnumerator 物件,用來取得Moniker以在呼叫端未指定 CLSID
時開啟連接。
hWnd
[in] 做為對話方塊之父視窗的控制代碼。 使用使用 hWnd 參數的函式多載會自動叫用服務元件;如需詳細資訊,請參閱。
dwPromptOptions
[in] 決定要顯示的定位程式對話方塊樣式。 請參閱 Msdasc.h 中的可能值。
傳回值
標準 HRESULT。
備註
使用 hWnd 參數的方法多載會以oledb32.dll中的服務元件開啟數據源物件;此 DLL 包含服務元件功能的實作,例如資源分享、自動交易登記等等。 如需詳細資訊,請參閱 OLE DB 程式設計人員指南中的 OLE DB 參考。
不使用 hWnd 參數的方法多載會開啟數據源物件,而不需使用 oledb32.dll 中的服務元件。 使用這些函式多載開啟的 CDataSource 物件將無法利用服務元件的任何功能。
範例
下列程式碼示範如何使用 OLE DB 範本開啟 Jet 4.0 資料來源。 您可以將 Jet 資料來源當做 OLE DB 資料來源。 不過,呼叫 Open
需要兩個屬性集:一個用於DBPROPSET_DBINIT,另一個用於DBPROPSET_JETOLEDB_DBINIT,以便您可以設定DBPROP_JETOLEDB_DATABASEPASSWORD。
CDBPropSet rgDBPropSet[2]; // Declare two property sets;
// set properties elsewhere as appropriate.
hr = m_DataSource.Open(szProgId, rgDBPropSet, 2);
CDataSource::OpenFromFileName
從以使用者提供的檔名指定的檔案,開啟資料來源。
語法
HRESULT OpenFromFileName(LPCOLESTR szFileName) throw();
參數
szFileName
[in] 檔案的名稱,通常是資料來源連接 (.UDL) 檔案。
如需數據連結檔案的詳細資訊(.udl 檔案),請參閱 Windows SDK 中的數據連結 API 概觀 。
傳回值
標準 HRESULT。
備註
這個方法會使用 oledb32.dll 中的服務元件開啟資料來源物件;此 DLL 包含服務元件功能的實作,例如資源集中化、自動交易登記等。 如需詳細資訊,請參閱 OLE DB 程式設計人員指南中的 OLE DB 參考。
CDataSource::OpenFromInitializationString
開啟使用者提供的初始化字串所指定的數據源。
語法
HRESULT OpenFromInitializationString(LPCOLESTR szInitializationString,
bool fPromptForInfo= false) throw();
參數
szInitializationString
[in]初始化字串。
fPromptForInfo
[in]如果這個自變數設定為 true
,則會 OpenFromInitializationString
將 DBPROP_INIT_PROMPT 屬性設定為 DBPROMPT_COMPLETEREQUIRED,這指定只有在需要更多資訊時,才會提示使用者。 這適用於初始化字串指定需要密碼的資料庫,但字串不包含密碼的情況。 嘗試連線到資料庫時,系統會提示使用者輸入密碼(或任何其他遺漏資訊)。
預設值為 false
,指定永遠不會提示使用者 (將DBPROP_INIT_PROMPT設定為 DBPROMPT_NOPROMPT)。
傳回值
標準 HRESULT。
備註
這個方法會使用 oledb32.dll 中的服務元件開啟資料來源物件;此 DLL 包含服務元件功能的實作,例如資源集中化、自動交易登記等。
CDataSource::OpenWithPromptFileName
此方法會以對話方塊提示使用者,然後使用使用者所指定的檔案開啟資料來源。
語法
HRESULT OpenWithPromptFileName(HWND hWnd = GetActiveWindow( ),
DBPROMPTOPTIONS dwPromptOptions = DBPROMPTOPTIONS_NONE,
LPCOLESTR szInitialDirectory = NULL) throw();
參數
hWnd
[in] 做為對話方塊之父視窗的控制代碼。
dwPromptOptions
[in] 決定要顯示的定位程式對話方塊樣式。 請參閱 Msdasc.h 中的可能值。
szInitialDirectory
[in] 要顯示在定位器對話方塊中的初始目錄。
傳回值
標準 HRESULT。
備註
這個方法會使用 oledb32.dll 中的服務元件開啟資料來源物件;此 DLL 包含服務元件功能的實作,例如資源集中化、自動交易登記等。 如需詳細資訊,請參閱 OLE DB 程式設計人員指南中的 OLE DB 參考。
CDataSource::OpenWithServiceComponents
使用 oledb32.dll 中的服務元件來開啟資料來源物件。
語法
HRESULT OpenWithServiceComponents (const CLSID clsid,
DBPROPSET* pPropset = NULL,
ULONG ulPropSets = 1);
HRESULT OpenWithServiceComponents (LPCSTR szProgID,
DBPROPSET* pPropset = NULL,
ULONG ulPropSets = 1);
參數
clsid
[in] CLSID
資料提供者的 。
szProgID
[in] 資料提供者的程式識別碼。
pPropset
[in]DBPROPSET 結構的陣列指標,其中包含要設定的屬性和值。 請參閱 Windows SDK 中 OLE DB 程式設計人員參考中的屬性集和屬性群組。 如果資料來源物件已初始化,屬性必須屬於資料來源屬性群組。 如果在 pPropset 中指定了相同屬性一次以上,則會使用哪一個值是提供者特定的。 如果 ulPropSets 為零,則會忽略此參數。
ulPropSets
[in]在 pPropSet 自變數中傳遞的 DBPROPSET 結構數目。 如果這是零,提供者會 忽略 pPropset。
傳回值
標準 HRESULT。
備註
這個方法會使用 oledb32.dll 中的服務元件開啟資料來源物件;此 DLL 包含服務元件功能的實作,例如資源集中化、自動交易登記等。 如需詳細資訊,請參閱 OLE DB 程式設計人員指南中的 OLE DB 參考。