共用方式為


CDaoQueryDef 類別

表示查詢定義 (或 "querydef"),通常是儲存在資料庫中的定義。

語法

class CDaoQueryDef : public CObject

成員

公用建構函式

名稱 描述
CDaoQueryDef::CDaoQueryDef 建構 CDaoQueryDef 物件。 下一次呼叫 OpenCreate ,視您的需求而定。

公用方法

名稱 描述
CDaoQueryDef::Append 將 querydef 附加至資料庫的 QueryDefs 集合作為已儲存的查詢。
CDaoQueryDef::CanUpdate 如果查詢可以更新資料庫,則傳回非零。
CDaoQueryDef::Close 關閉 querydef 物件。 當您完成 C++ 物件時,請終結它。
CDaoQueryDef::Create 建立基礎 DAO querydef 物件。 使用 querydef 做為暫存查詢,或呼叫 Append 將它儲存在資料庫中。
CDaoQueryDef::Execute 執行 querydef 物件所定義的查詢。
CDaoQueryDef::Get連線 傳回與 querydef 相關聯的連接字串。 連接字串會識別資料來源。 (僅適用于 SQL 傳遞查詢,否則為空字串。
CDaoQueryDef::GetDateCreated 傳回已儲存查詢建立的日期。
CDaoQueryDef::GetDateLastUpdated 傳回上次更新儲存查詢的日期。
CDaoQueryDef::GetFieldCount 傳回 querydef 所定義的欄位數目。
CDaoQueryDef::GetFieldInfo 傳回查詢中定義之指定欄位的相關資訊。
CDaoQueryDef::GetName 傳回 querydef 的名稱。
CDaoQueryDef::GetODBCTimeout 傳回執行 querydef 時,ODBC 所使用的逾時值(用於 ODBC 查詢)。 這會決定允許查詢動作完成的時間長度。
CDaoQueryDef::GetParameterCount 傳回為查詢定義的參數數目。
CDaoQueryDef::GetParameterInfo 將指定參數的相關資訊傳回查詢。
CDaoQueryDef::GetParamValue 將指定參數的值傳回查詢。
CDaoQueryDef::GetRecordsAffected 傳回動作查詢所影響的記錄數目。
CDaoQueryDef::GetReturnsRecords 如果 querydef 所定義的查詢傳回記錄,則傳回非零。
CDaoQueryDef::GetSQL 傳回 SQL 字串,指定 querydef 所定義的查詢。
CDaoQueryDef::GetType 傳回查詢類型:delete、update、append、make-table 等等。
CDaoQueryDef::IsOpen 如果 querydef 已開啟且可執行,則傳回非零。
CDaoQueryDef::Open 開啟儲存在資料庫 QueryDefs 集合中的現有 querydef。
CDaoQueryDef::Set連線 設定 ODBC 資料來源上 SQL 傳遞查詢的連接字串。
CDaoQueryDef::SetName 設定已儲存查詢的名稱,取代建立 querydef 時所使用的名稱。
CDaoQueryDef::SetODBCTimeout 設定執行 querydef 時,ODBC 所使用的逾時值(用於 ODBC 查詢)。
CDaoQueryDef::SetParamValue 將指定參數的值設定為查詢。
CDaoQueryDef::SetReturnsRecords 指定 querydef 是否傳回記錄。 將此屬性設定為 TRUE 僅適用于 SQL 傳遞查詢。
CDaoQueryDef::SetSQL 設定 SQL 字串,指定 querydef 所定義的查詢。

公用資料成員

名稱 描述
CDaoQueryDef::m_pDAOQueryDef 基礎 DAO querydef 物件的 OLE 介面指標。
CDaoQueryDef::m_pDatabase 與 querydef 相關聯之 CDaoDatabase 物件的指標。 querydef 可能儲存在資料庫中。

備註

querydef 是資料存取物件,其中包含描述查詢的 SQL 語句及其屬性,例如「建立日期」和「ODBC 逾時」。您也可以建立暫存的 querydef 物件,而不儲存它們,但它很方便,而且更有效率地將常用的查詢儲存在資料庫中。 CDaoDatabase 物件會維護名為 QueryDefs 集合的集合,其中包含其已儲存的 querydefs。

注意

DAO 資料庫類別與以 Open Database 連線ivity (ODBC) 為基礎的 MFC 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 資料來源。 一般而言,以 DAO 為基礎的 MFC 類別比以 ODBC 為基礎的 MFC 類別更有能力;DAO 型類別可以透過自己的資料庫引擎存取資料,包括透過 ODBC 驅動程式。 DAO 型類別也支援資料定義語言 (DDL) 作業,例如透過類別新增資料表,而不需要直接呼叫 DAO。

使用方式

使用 querydef 物件來處理現有的已儲存查詢,或建立新的已儲存查詢或暫存查詢:

  1. 在所有情況下,請先建構 CDaoQueryDef 物件,並提供查詢所屬 CDaoDatabase 物件的指標

  2. 然後根據您想要的內容執行下列動作:

    • 若要使用現有的已儲存查詢,請呼叫 querydef 物件的 Open 成員函式,並提供已儲存查詢的名稱。

    • 若要建立新的已儲存查詢,請呼叫 querydef 物件的 Create 成員函式,並提供查詢的名稱。 然後呼叫 Append 以儲存查詢,方法是將它附加至資料庫的 QueryDefs 集合。 Create 會將 querydef 置於開啟狀態,因此呼叫 Create 之後,您不會呼叫 Open

    • 若要建立暫時的 querydef,請呼叫 Create 。 傳遞查詢名稱的空字串。 請不要呼叫 Append

當您完成使用 querydef 物件時,請呼叫其 Close 成員函式,然後終結 querydef 物件。

提示

建立已儲存查詢最簡單的方式是使用 Microsoft Access 建立查詢,並將其儲存在資料庫中。 然後,您可以在 MFC 程式碼中開啟並使用它們。

用途

您可以針對下列任何目的使用 querydef 物件:

  • 若要建立 CDaoRecordset 物件

  • 若要呼叫物件的 Execute 成員函式,以直接執行動作查詢或 SQL 傳遞查詢

您可以針對任何類型的查詢使用 querydef 物件,包括 select、action、crosstab、delete、update、append、make-table、data definition、SQL 傳遞、聯集和大量查詢。 查詢的類型取決於您提供的 SQL 語句內容。 如需查詢類型的相關資訊,請參閱 Execute GetType 成員函式。 記錄集通常用於傳回資料列的查詢,通常是使用 SELECT ...FROM 關鍵字。 Execute 最常用於大量作業。 如需詳細資訊,請參閱 Execute CDaoRecordset

Querydefs 和 Recordsets

若要使用 querydef 物件來建立 CDaoRecordset 物件,您通常會建立或開啟 querydef,如上所述。 然後建構記錄集物件,當您呼叫 CDaoRecordset::Open 時,將指標傳遞至 querydef 物件。 您傳遞的 querydef 必須處於開啟狀態。 如需詳細資訊,請參閱 CDaoRecordset 類別

除非 querydef 處於開啟狀態,否則您無法使用 querydef 來建立記錄集(最常見的 querydef 用法)。 藉由呼叫 OpenCreate ,將 querydef 放入開啟狀態。

外部資料庫

Querydef 物件是使用外部資料庫引擎原生 SQL 方言的慣用方式。 例如,您可以建立 Transact SQL 查詢(如在 Microsoft SQL Server 上使用),並將其儲存在 querydef 物件中。 當您需要使用不是以 Microsoft Jet 資料庫引擎為基礎的 SQL 查詢時,您必須提供指向外部資料源的連接字串。 具有有效連接字串的查詢會略過資料庫引擎,並將查詢直接傳遞至外部資料庫伺服器進行處理。

提示

使用 ODBC 資料表的慣用方式是將它們附加至 Microsoft Jet (。MDB) 資料庫。

如需相關資訊,請參閱 DAO SDK 中的「QueryDef 物件」、「QueryDefs 集合」和「CdbDatabase 物件」主題。

繼承階層架構

CObject

CDaoQueryDef

需求

標頭: afxdao.h

CDaoQueryDef::Append

呼叫 Create 之後 呼叫這個成員函式,以建立新的 querydef 物件。

virtual void Append();

備註

Append 藉由將 物件附加至資料庫的 QueryDefs 集合,將 querydef 儲存在資料庫中。 您可以使用 querydef 做為暫存物件,而不附加它,但如果您想要保存查詢,則必須呼叫 Append

如果您嘗試附加暫存 querydef 物件,MFC 會擲回 CDaoException 類型的 例外狀況

CDaoQueryDef::CanUpdate

呼叫這個成員函式來判斷您是否可以修改 querydef,例如變更其名稱或 SQL 字串。

BOOL CanUpdate();

傳回值

如果您允許修改 querydef,則為非零;否則為 0。

備註

如果下列狀況,您可以修改 querydef:

  • 它不是以開啟唯讀的資料庫為基礎。

  • 您有資料庫的更新許可權。

    這取決於您是否已實作安全性功能。 MFC 不支援安全性;您必須直接呼叫 DAO 或使用 Microsoft Access 自行實作它。 請參閱 DAO 說明中的「許可權屬性」主題。

CDaoQueryDef::CDaoQueryDef

建構 CDaoQueryDef 物件。

CDaoQueryDef(CDaoDatabase* pDatabase);

參數

pDatabase
開啟 之 CDaoDatabase 物件的指標。

備註

物件可以代表儲存在資料庫的 QueryDefs 集合中的現有 querydef、要儲存在集合中的新查詢,或暫存查詢,而不是儲存。 下一個步驟取決於 querydef 的類型:

  • 如果物件代表現有的 querydef,請呼叫物件的 Open 成員函式來初始化它。

  • 如果物件代表要儲存的新 querydef,請呼叫物件的 Create 成員函式。 這會將 物件新增至資料庫的 QueryDefs 集合。 然後呼叫 CDaoQueryDef 成員函式來設定物件的屬性。 最後,呼叫 Append

  • 如果 物件代表暫存 querydef(不要儲存在資料庫中),請呼叫 Create ,並傳遞查詢名稱的空字串。 呼叫 Create 之後,直接設定其屬性,以初始化 querydef。 請不要呼叫 Append

若要設定 querydef 的屬性,您可以使用 SetName SetSQL Set連線 SetODBCTimeout SetReturnsRecords 成員函式。

當您完成 querydef 物件時,請呼叫其 Close 成員函式。 如果您有 querydef 的指標,請使用 delete 運算子終結 C++ 物件。

CDaoQueryDef::Close

當您完成使用 querydef 物件時,請呼叫這個成員函式。

virtual void Close();

備註

關閉 querydef 會釋放基礎 DAO 物件,但不會終結已儲存的 DAO querydef 物件或 C++ CDaoQueryDef 物件。 這與 CDaoDatabase::D eleteQueryDef 不同 ,這會從 DAO 中資料庫的 QueryDefs 集合中刪除 querydef (如果不是暫時的 querydef)。

CDaoQueryDef::Create

呼叫這個成員函式,以建立新的已儲存的查詢或新的暫存查詢。

virtual void Create(
    LPCTSTR lpszName = NULL,
    LPCTSTR lpszSQL = NULL);

參數

lpszName
儲存在資料庫中之查詢的唯一名稱。 如需字串的詳細資訊,請參閱 DAO 說明中的主題。 如果您接受預設值,則會建立空字串,並建立暫時的 querydef。 這類查詢不會儲存在 QueryDefs 集合中。

lpszSQL
定義查詢的 SQL 字串。 如果您接受 Null 的預設值,您稍後必須呼叫 SetSQL 來設定字串。 在那之前,查詢是未定義的。 不過,您可以使用未定義的查詢來開啟記錄集;如需詳細資訊,請參閱。 必須先定義 SQL 語句,才能將 querydef 附加至 QueryDefs 集合。

備註

如果您在 lpszName 傳遞名稱,則可以呼叫 Append ,將 querydef 儲存在資料庫的 QueryDefs 集合中。 否則,物件是暫時的 querydef,而且不會儲存。 在任一情況下,querydef 處於開啟狀態,而且您可以使用它來建立 CDaoRecordset 物件,或呼叫 querydef 的 Execute 成員函式。

如果您未在 lpszSQL 提供 SQL 語句,則無法使用 來執行查詢 Execute ,但您可以使用它來建立記錄集。 在此情況下,MFC 會使用記錄集的預設 SQL 語句。

CDaoQueryDef::Execute

呼叫這個成員函式來執行 querydef 物件所定義的查詢。

virtual void Execute(int nOptions = dbFailOnError);

參數

nOptions
決定查詢特性的整數。 如需相關資訊,請參閱 DAO 說明中的「執行方法」主題。 您可以使用位 OR 運算子 ( | ) 來結合這個引數的下列常數:

  • dbDenyWrite 拒絕其他使用者的寫入權限。

  • dbInconsistent 更新不一致。

  • dbConsistent 一致的更新。

  • dbSQLPassThrough SQL 傳遞。 導致 SQL 語句傳遞至 ODBC 資料庫進行處理。

  • dbFailOnError 預設值。 如果發生錯誤並將錯誤回報給使用者,請回復更新。

  • dbSeeChanges 如果其他使用者正在變更您正在編輯的資料,則產生執行階段錯誤。

注意

如需「不一致」和「一致」一詞的說明,請參閱 DAO 說明中的「執行方法」主題。

備註

以這種方式執行所使用的 Querydef 物件只能代表下列其中一個查詢類型:

  • 動作查詢

  • SQL 傳遞查詢

Execute 不適用於傳回記錄的查詢,例如選取查詢。 Execute 通常用於大量作業查詢,例如 UPDATE INSERT SELECT INTO ,或用於資料定義語言 (DDL) 作業。

提示

使用 ODBC 資料來源的慣用方式是將資料表附加至 Microsoft Jet (。MDB) 資料庫。 如需詳細資訊,請參閱 DAO 說明中的<使用 DAO 存取外部資料庫>主題。

呼叫 querydef 物件的 GetRecordsAffected 成員函式,以判斷受最近 Execute 呼叫影響的記錄數目。 例如, GetRecordsAffected 傳回執行動作查詢時已刪除、更新或插入之記錄數目的相關資訊。 當串聯更新或刪除生效時,傳回的計數不會反映相關資料表中的變更。

如果您同時 dbInconsistent 包含 和 或 dbConsistent ,則結果為預設值 , dbInconsistent

Execute 不會傳回記錄集。 在 Execute 選取記錄的查詢上使用會導致 MFC 擲回 CDaoException 類型的 例外狀況

CDaoQueryDef::Get連線

呼叫這個成員函式,以取得與 querydef 資料來源相關聯的連接字串。

CString GetConnect();

傳回值

CString ,包含 querydef 的連接字串。

備註

此函式只能與 ODBC 資料來源和特定 ISAM 驅動程式搭配使用。 它不會與 Microsoft Jet 搭配使用(。MDB) 資料庫;在此情況下, GetConnect 會傳回空字串。 如需詳細資訊,請參閱 Set連線

提示

使用 ODBC 資料表的慣用方式是將它們附加至 。MDB 資料庫。 如需詳細資訊,請參閱 DAO 說明中的<使用 DAO 存取外部資料庫>主題。

如需連接字串的相關資訊,請參閱 DAO 說明中的<連線屬性>主題。

CDaoQueryDef::GetDateCreated

呼叫此成員函式以取得建立 querydef 物件的日期。

COleDateTime GetDateCreated();

傳回值

COleDateTime 物件,其中包含建立 querydef 的日期和時間。

備註

如需相關資訊,請參閱 DAO 說明中的「DateCreated、LastUpdated 屬性」主題。

CDaoQueryDef::GetDateLastUpdated

呼叫這個成員函式以取得 querydef 物件上次更新的日期, 當其任何屬性變更時,例如其名稱、SQL 字串或其連接字串。

COleDateTime GetDateLastUpdated();

傳回值

包含 querydef 上次更新日期和時間的 COleDateTime 物件。

備註

如需相關資訊,請參閱 DAO 說明中的「DateCreated、LastUpdated 屬性」主題。

CDaoQueryDef::GetFieldCount

呼叫這個成員函式以擷取查詢中的欄位數目。

short GetFieldCount();

傳回值

查詢中定義的欄位數目。

備註

GetFieldCount 對於在 querydef 中迴圈處理所有欄位很有用。 為此,請搭配 GetFieldInfo 使用 GetFieldCount

CDaoQueryDef::GetFieldInfo

呼叫這個成員函式,以取得 querydef 中定義之欄位的各種資訊。

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

參數

nIndex
querydef 的 Fields 集合中所需欄位之以零起始的索引,可依索引查閱。

fieldinfo
傳回所要求資訊的 物件參考 CDaoFieldInfo

dwInfoOptions
指定要擷取之欄位相關資訊的選項。 可用的選項會列在這裡,以及導致函式傳回的原因:

  • AFX_DAO_PRIMARY_INFO (預設值) 名稱、類型、大小、屬性

  • AFX_DAO_SECONDARY_INFO主要資訊加上:序數位置、必要、允許零長度、來源欄位、外部名稱、來源資料表、定序順序

  • AFX_DAO_ALL_INFO主要和次要資訊加上:預設值、驗證文字、驗證規則

lpszName
字串,包含所需欄位的名稱,以便依名稱查閱。 您可以使用 CString

備註

如需 fieldinfo 傳回之資訊的描述,請參閱 CDaoFieldInfo 結構。 此結構的成員對應至上述 dwInfoOptions 底下 的描述性資訊。 如果您要求一個層級的資訊,您也會取得任何先前層級的資訊。

CDaoQueryDef::GetName

呼叫這個成員函式,以擷取 querydef 所表示的查詢名稱。

CString GetName();

傳回值

查詢的名稱。

備註

Querydef 名稱是唯一的使用者定義名稱。 如需 querydef 名稱的詳細資訊,請參閱 DAO 說明中的「名稱屬性」主題。

CDaoQueryDef::GetODBCTimeout

呼叫這個成員函式,在 ODBC 資料來源的查詢逾時之前擷取目前的時間限制。

short GetODBCTimeout();

傳回值

查詢逾時之前的秒數。

備註

如需此時間限制的相關資訊,請參閱 DAO 說明中的主題。

提示

使用 ODBC 資料表的慣用方式是將它們附加至 Microsoft Jet (。MDB) 資料庫。 如需詳細資訊,請參閱 DAO 說明中的<使用 DAO 存取外部資料庫>主題。

CDaoQueryDef::GetParameterCount

呼叫這個成員函式,以擷取已儲存查詢中的參數數目。

short GetParameterCount();

傳回值

查詢中定義的參數數目。

備註

GetParameterCount 對於在 querydef 中迴圈處理所有參數很有用。 為此,請搭配 GetParameterInfo 使用 GetParameterCount

如需相關資訊,請參閱 DAO 說明中的「參數物件」、「參數集合」和「PARAMETERS 宣告」主題。

CDaoQueryDef::GetParameterInfo

呼叫這個成員函式,以取得 querydef 中定義之參數的相關資訊。

void GetParameterInfo(
    int nIndex,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetParameterInfo(
    LPCTSTR lpszName,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

參數

nIndex
querydef 之 Parameters 集合中所需參數之以零起始的索引,可依索引查閱。

paraminfo
傳回所要求資訊的 CDaoParameterInfo 物件的參考

dwInfoOptions
指定要擷取之參數相關資訊的選項。 可用的選項會列在這裡,以及它導致函式傳回的原因:

  • AFX_DAO_PRIMARY_INFO (預設) 名稱, 輸入

lpszName
字串,包含所需參數的名稱,以依名稱查閱。 您可以使用 CString

備註

如需 paraminfo 傳回之資訊的描述,請參閱 CDaoParameterInfo 結構。 此結構的成員對應至上述 dwInfoOptions 底下 的描述性資訊。

如需相關資訊,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetParamValue

呼叫這個成員函式,以擷取儲存在 querydef 之 Parameters 集合中之指定參數的目前值。

virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);

參數

lpszName
要依名稱查閱其值的參數名稱。

nIndex
querydef 之 Parameters 集合中參數以零起始的索引,可依索引查閱。 您可以使用對 GetParameterCount GetParameterInfo 的 呼叫來取得此值。

傳回值

COleVariant 類別 的物件,其中包含參數的值。

備註

您可以依名稱或集合中的序數位置來存取參數。

如需相關資訊,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetRecordsAffected

呼叫這個成員函式,以判斷最後一次呼叫 Execute 會影響多少筆記錄。

long GetRecordsAffected();

傳回值

受影響的記錄數目。

備註

當串聯更新或刪除生效時,傳回的計數不會反映相關資料表中的變更。

如需相關資訊,請參閱 DAO 說明中的「RecordsAffected 屬性」主題。

CDaoQueryDef::GetReturnsRecords

呼叫這個成員函式,以判斷 querydef 是否以傳回記錄的查詢為基礎。

BOOL GetReturnsRecords();

傳回值

如果 querydef 是以傳回記錄的查詢為基礎,則為非零;否則為 0。

備註

此成員函式僅用於 SQL 傳遞查詢。 如需 SQL 查詢的詳細資訊,請參閱 Execute 成員函式。 如需使用 SQL 傳遞查詢的詳細資訊,請參閱 SetReturnsRecords 成員函式。

如需相關資訊,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetSQL

呼叫這個成員函式來擷取 SQL 語句,以定義 querydef 所依據的查詢。

CString GetSQL();

傳回值

定義 querydef 所依據之查詢的 SQL 語句。

備註

然後,您可能會剖析關鍵字、資料表名稱等的字串。

如需相關資訊,請參閱 DAO 說明中的和<在程式碼中使用 SQL 查詢資料庫>主題。

CDaoQueryDef::GetType

呼叫這個成員函式來判斷 querydef 的查詢類型。

short GetType();

傳回值

querydef 所定義的查詢類型。 如需值,請參閱。

備註

當您建立 querydef 或呼叫現有的 querydef 的 SetSQL 成員函式時,查詢類型是由您在 querydef 的 SQL 字串中指定的專案所設定。 此函式傳回的查詢類型可以是下列其中一個值:

  • dbQSelect 選擇

  • dbQAction 動作

  • dbQCrosstab Crosstab

  • dbQDelete 刪除

  • dbQUpdate 更新

  • dbQAppend 附加

  • dbQMakeTable Make-table

  • dbQDDL 資料定義

  • dbQSQLPassThrough 傳遞

  • dbQSetOperation 聯盟

  • dbQSPTBulkdbQSQLPassThrough搭配 使用 來指定不會傳回記錄的查詢。

注意

若要建立 SQL 傳遞查詢,請勿設定 dbSQLPassThrough 常數。 當您建立 querydef 物件並設定連接字串時,Microsoft Jet 資料庫引擎會自動設定此設定。

如需 SQL 字串的相關資訊,請參閱 GetSQL 。 如需查詢類型的相關資訊,請參閱 執行

CDaoQueryDef::IsOpen

呼叫這個成員函式,以判斷物件目前是否 CDaoQueryDef 開啟。

BOOL IsOpen() const;

傳回值

如果物件目前開啟,則為 CDaoQueryDef 非零,否則為 0。

備註

querydef 必須處於開啟狀態,才能使用它來呼叫 Execute 或建立 CDaoRecordset 物件。 若要將 querydef 放入開放式狀態呼叫 中,請建立 (針對新的 querydef) 或 Open (針對現有的 querydef)。

CDaoQueryDef::m_pDatabase

包含與 querydef 物件相關聯的 CDaoDatabase 物件的指標

備註

如果您需要直接存取資料庫,請使用此指標,例如,取得資料庫集合中其他 querydef 或 recordset 物件的指標。

CDaoQueryDef::m_pDAOQueryDef

包含基礎 DAO querydef 物件的 OLE 介面指標。

備註

此指標是為了與其他類別的完整性和一致性而提供。 不過,因為 MFC 相當完整地封裝 DAO querydefs,所以您不太可能需要它。 如果您確實使用它,請謹慎執行此動作,特別是除非您知道您正在做什麼,否則請勿變更指標的值。

CDaoQueryDef::Open

呼叫這個成員函式,以開啟先前儲存在資料庫的 QueryDefs 集合中的 querydef。

virtual void Open(LPCTSTR lpszName = NULL);

參數

lpszName
字串,包含要開啟之已儲存之 querydef 的名稱。 您可以使用 CString

備註

一旦 querydef 開啟,您就可以呼叫它的 Execute 成員函式,或使用 querydef 來建立 CDaoRecordset 物件。

CDaoQueryDef::Set連線

呼叫這個成員函式來設定 querydef 物件的連接字串。

void SetConnect(LPCTSTR lpszConnect);

參數

lpsz連線
字串,包含相關聯 CDaoDatabase 物件的連接字串。

備註

連接字串可用來視需要將其他資訊傳遞至 ODBC 和特定 ISAM 驅動程式。 它不適用於 Microsoft Jet (。MDB) 資料庫。

提示

使用 ODBC 資料表的慣用方式是將它們附加至 。MDB 資料庫。

在執行代表 SQL 傳遞查詢至 ODBC 資料來源的 querydef 之前,請先使用 SetConnect 設定 連接字串,並呼叫 SetReturnsRecords 來指定查詢是否傳回記錄。

如需連接字串結構和連接字串元件範例的詳細資訊,請參閱 DAO 說明中的<連線 屬性>主題。

CDaoQueryDef::SetName

如果您想要變更不是暫時的 querydef 名稱,請呼叫此成員函式。

void SetName(LPCTSTR lpszName);

參數

lpszName
字串,包含相關聯 CDaoDatabase 物件中非範本查詢的新名稱。

備註

Querydef 名稱是唯一的使用者定義名稱。 您可以在 querydef 物件附加至 QueryDefs 集合之前呼叫 SetName

CDaoQueryDef::SetODBCTimeout

呼叫這個成員函式,以設定查詢到 ODBC 資料來源逾時之前的時間限制。

void SetODBCTimeout(short nODBCTimeout);

參數

nODBCTimeout
查詢逾時之前的秒數。

備註

此成員函式可讓您覆寫連線資料來源上後續作業「逾時」之前的預設秒數。作業可能會因為網路存取問題、查詢處理時間過長等而逾時。 SetODBCTimeout如果您想要變更查詢逾時值,請使用這個 querydef 執行查詢之前呼叫 。 (當 ODBC 重複使用連接時,相同連接上所有用戶端的逾時值都相同。

查詢逾時的預設值為 60 秒。

CDaoQueryDef::SetParamValue

呼叫這個成員函式,以在執行時間設定 querydef 中的參數值。

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

參數

lpszName
您要設定其值的參數名稱。

varValue
要設定的值;請參閱。

nIndex
參數在 querydef 的 Parameters 集合中的序數位置。 您可以使用對 GetParameterCount GetParameterInfo 的 呼叫來取得此值。

備註

參數必須已建立為 querydef SQL 字串的一部分。 您可以依名稱或集合中的序數位置來存取參數。

指定要設定為 COleVariant 物件的值。 如需在 物件中 COleVariant 設定所需值和類型的相關資訊,請參閱 COleVariant 類別

CDaoQueryDef::SetReturnsRecords

將此成員函式呼叫為設定 SQL 傳遞查詢至外部資料庫的一部分。

void SetReturnsRecords(BOOL bReturnsRecords);

參數

bReturnsRecords
如果外部資料庫的查詢傳回記錄,則傳遞 TRUE;否則為 FALSE。

備註

在這種情況下,您必須建立 querydef,並使用其他 CDaoQueryDef 成員函式來設定其屬性。 如需外部資料庫的描述,請參閱 Set連線

CDaoQueryDef::SetSQL

呼叫這個成員函式,以設定 querydef 執行的 SQL 語句。

void SetSQL(LPCTSTR lpszSQL);

參數

lpszSQL
包含完整 SQL 語句的字串,適合執行。 此字串的語法取決於您查詢的目標 DBMS。 如需 Microsoft Jet 資料庫引擎中使用的語法討論,請參閱 DAO 說明中的<在程式碼中建置 SQL 語句>主題。

備註

的一般用法 SetSQL 是設定 querydef 物件,以用於 SQL 傳遞查詢。 (如需目標 DBMS 上的 SQL 傳遞查詢語法,請參閱 DBMS 的檔。

另請參閱

CObject 類別
階層架構圖表
CDaoRecordset 類別
CDaoDatabase 類別
CDaoTableDef 類別
CDaoException 類別