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::GetConnect 返回与此 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 返回指定由 querydef 定义的查询的 SQL 字符串。
CDaoQueryDef::GetType 返回查询类型:删除、更新、追加、生成表等。
CDaoQueryDef::IsOpen 如果 querydef 处于打开状态并且可以执行,则返回非零。
CDaoQueryDef::Open 打开存储在数据库的 QueryDefs 集合中的现有 querydef。
CDaoQueryDef::SetConnect 设置 ODBC 数据源上的 SQL 直通查询的连接字符串。
CDaoQueryDef::SetName 设置已保存查询的名称,替换在创建 querydef 时使用的名称。
CDaoQueryDef::SetODBCTimeout 设置执行 querydef 时 ODBC 使用的超时值(用于 ODBC 查询)。
CDaoQueryDef::SetParamValue 设置查询的指定参数的值。
CDaoQueryDef::SetReturnsRecords 指定 querydef 是否返回记录。 将此属性设置为 TRUE 仅适用于 SQL 直通查询。
CDaoQueryDef::SetSQL 设置指定由 querydef 定义的查询的 SQL 字符串。

公共数据成员

“属性” 描述
CDaoQueryDef::m_pDAOQueryDef 指向基础 DAO querydef 对象的 OLE 接口的指针。
CDaoQueryDef::m_pDatabase 指向与 querydef 关联的 CDaoDatabase 对象的指针。 querydef 可能保存在数据库中,也可能不保存在数据库中。

备注

querydef 是一个数据访问对象,其中包含描述查询的 SQL 语句及其属性,例如“创建日期”和“ODBC 超时”。还可以创建临时 querydef 对象(不保存它们),但是将常用的重用查询保存在数据库中很方便,而且效率更高。 CDaoDatabase 对象维护一个集合,称为 QueryDefs 集合,其中包含其保存的 querydef。

注意

DAO 数据库类不同于基于开放式数据库连接 (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 对象用于任何类型的查询,包括选择、操作、交叉表、删除、更新、追加、生成表、数据定义、SQL 直通、联合和批量查询。 查询的类型由你提供的 SQL 语句的内容确定。 有关查询类型的信息,请参阅 ExecuteGetType 成员函数。 记录集通常用于返回行的查询,通常是使用 SELECT ... FROM 关键字的查询。 Execute 最常用于批量操作。 有关详细信息,请参阅 ExecuteCDaoRecordset

querydef 和记录集

要使用 querydef 对象创建 CDaoRecordset 对象,通常如上所述创建或打开 querydef。 然后构造一个记录集对象,在调用 CDaoRecordset::Open 时传递一个指向 querydef 对象的指针。 传递的 querydef 必须处于打开状态。 有关详细信息,请参阅 CDaoRecordset 类。

除非它处于打开状态,否则不能使用 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 帮助中的主题“Permissions 属性”。

CDaoQueryDef::CDaoQueryDef

构造 CDaoQueryDef 对象。

CDaoQueryDef(CDaoDatabase* pDatabase);

参数

pDatabase
指向打开的 CDaoDatabase 对象的指针。

注解

该对象可以表示存储在数据库的 QueryDefs 集合中的现有 querydef、要存储在集合中的新查询或不存储的临时查询。 下一步取决于 querydef 的类型:

  • 如果对象表示现有的 querydef,则调用对象的 Open 成员函数对其进行初始化。

  • 如果对象表示要保存的新 querydef,则调用对象的 Create 成员函数。 这会将对象添加到数据库的 QueryDefs 集合。 然后,调用 CDaoQueryDef 成员函数来设置对象的属性。 最后,调用 Append

  • 如果对象表示临时 querydef(不保存在数据库中),则调用 Create,为查询名称传递一个空字符串。 调用 Create 后,通过直接设置其属性来初始化 querydef。 请勿调用 Append

若要设置 querydef 的属性,可以使用 SetNameSetSQLSetConnectSetODBCTimeoutSetReturnsRecords 成员函数。

使用完 querydef 对象后,调用其 Close 成员函数。 如果有指向 querydef 的指针,请使用 delete 运算符来销毁 C++ 对象。

CDaoQueryDef::Close

使用完 querydef 对象后调用此成员函数。

virtual void Close();

备注

关闭 querydef 会释放基础 DAO 对象,但不会销毁保存的 DAO querydef 对象或 C++ CDaoQueryDef 对象。 这与 CDaoDatabase::DeleteQueryDef 不同,后者会从 DAO 中数据库的 QueryDefs 集合中删除 querydef(如果不是临时 querydef)。

CDaoQueryDef::Create

调用此成员函数以创建新的已保存查询或新的临时查询。

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

参数

lpszName
保存在数据库中的查询的唯一名称。 有关字符串的详细信息,请参阅 DAO 帮助中的主题“CreateQueryDef 方法”。 如果接受默认值,即一个空字符串,则会创建一个临时 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 帮助中的主题“Execute 方法”。 可以使用按位或运算符 (|) 组合此参数的以下常量:

  • dbDenyWrite 拒绝其他用户的写入权限。

  • dbInconsistent 更新不一致。

  • dbConsistent 更新一致。

  • dbSQLPassThrough SQL 直通。 导致将 SQL 语句传递到 ODBC 数据库进行处理。

  • dbFailOnError 默认值。 如果发生错误,则回滚更新并将错误报告给用户。

  • dbSeeChanges 如果其他用户正在更改你正在编辑的数据,则会生成运行时错误。

注意

有关术语“不一致”和“一致”的解释,请参阅 DAO 帮助中的主题“Execute 方法”。

备注

以这种方式执行的 querydef 对象只能表示以下查询类型之一:

  • 操作查询

  • SQL 直通查询

Execute 不适用于返回记录的查询,例如选择查询。 Execute 通常用于批量操作查询,例如 UPDATE、INSERT 或 SELECT INTO,或用于数据定义语言 (DDL) 操作。

提示

使用 ODBC 数据源的首选方法是将表附加到 Microsoft Jet (.MDB) 数据库。 有关详细信息,请参阅 DAO 帮助中的主题“使用 DAO 访问外部数据库”。

调用 querydef 对象的 GetRecordsAffected 成员函数以确定受最近一次 Execute 调用影响的记录数。 例如,GetRecordsAffected 返回有关在执行操作查询时删除、更新或插入的记录数的信息。 当级联更新或删除生效时,返回的计数不会反映相关表中的更改。

如果同时包含 dbInconsistentdbConsistent,或者两者都不包含,则结果为默认值 dbInconsistent

Execute 不返回记录集。 在选择记录的查询上使用 Execute 会导致 MFC 引发 CDaoException 类型的异常。

CDaoQueryDef::GetConnect

调用此成员函数以获取与 querydef 的数据源关联的连接字符串。

CString GetConnect();

返回值

包含 querydef 的连接字符串的 CString

备注

此函数仅用于 ODBC 数据源和某些 ISAM 驱动程序。 它不适用于 Microsoft Jet (.MDB) 数据库;在这种情况下,GetConnect 返回一个空字符串。 有关详细信息,请参阅 SetConnect

提示

使用 ODBC 表的首选方法是将它们附加到 .MDB 数据库。 有关详细信息,请参阅 DAO 帮助中的主题“使用 DAO 访问外部数据库”。

有关连接字符串的信息,请参阅 DAO 帮助中的主题“Connect 属性”。

CDaoQueryDef::GetDateCreated

调用此成员函数以获取创建 querydef 对象的日期。

COleDateTime GetDateCreated();

返回值

包含创建 querydef 的日期和时间的 COleDateTime 对象。

注解

有关相关信息,请参阅 DAO 帮助中的主题“DateCreated、LastUpdated 属性”。

CDaoQueryDef::GetDateLastUpdated

调用此成员函数以获取最后一次更新 querydef 对象的日期 - 更改其任何属性的时间,例如其名称、SQL 字符串或连接字符串。

COleDateTime GetDateLastUpdated();

返回值

包含上次更新 querydef 的日期和时间的 COleDateTime 对象。

注解

有关相关信息,请参阅 DAO 帮助中的主题“DateCreated、LastUpdated 属性”。

CDaoQueryDef::GetFieldCount

调用此成员函数以检索查询中的字段数。

short GetFieldCount();

返回值

查询中定义的字段数。

备注

GetFieldCount 可用于循环访问 querydef 中的所有字段。 为此,请将 GetFieldCountGetFieldInfo 结合使用。

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 帮助中的主题“Name 属性”。

CDaoQueryDef::GetODBCTimeout

调用此成员函数以在对 ODBC 数据源的查询超时之前检索当前时间限制。

short GetODBCTimeout();

返回值

查询超时之前等待的秒数。

注解

有关此时间限制的信息,请参阅 DAO 帮助中的主题“ODBCTimeout 属性”。

提示

使用 ODBC 表的首选方法是将它们附加到 Microsoft Jet (.MDB) 数据库。 有关详细信息,请参阅 DAO 帮助中的主题“使用 DAO 访问外部数据库”。

CDaoQueryDef::GetParameterCount

调用此成员函数以检索已保存查询中参数的数量。

short GetParameterCount();

返回值

查询中定义的参数的数量。

备注

GetParameterCount 可用于循环访问 querydef 中的所有参数。 为此,请将 GetParameterCountGetParameterInfo 结合使用。

有关相关信息,请参阅 DAO 帮助中的主题“参数对象”、“参数集合”和“PARAMETERS 声明 (SQL)”。

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 帮助中的主题“PARAMETERS 声明 (SQL)”。

CDaoQueryDef::GetParamValue

调用此成员函数以检索存储在 querydef 的 Parameters 集合中的指定参数的当前值。

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

参数

lpszName
需要其值的参数的名称,用于按名称查找。

nIndex
querydef 的 Parameters 集合中参数的从零开始的索引,用于按索引查找。 可以通过调用 GetParameterCountGetParameterInfo 来获取此值。

返回值

包含参数值的 COleVariant 类对象。

备注

可以按名称或按其在集合中的序号位置访问参数。

有关相关信息,请参阅 DAO 帮助中的主题“PARAMETERS 声明 (SQL)”。

CDaoQueryDef::GetRecordsAffected

调用此成员函数以确定上次调用 Execute 影响了多少条记录。

long GetRecordsAffected();

返回值

受影响的记录数。

注解

当级联更新或删除生效时,返回的计数不会反映相关表中的更改。

有关相关信息,请参阅 DAO 帮助中的主题“RecordsAffected 属性”。

CDaoQueryDef::GetReturnsRecords

调用此成员函数以确定 querydef 是否基于返回记录的查询。

BOOL GetReturnsRecords();

返回值

如果 querydef 基于返回记录的查询,则为非零;否则为 0。

注解

此成员函数仅用于 SQL 直通查询。 有关 SQL 查询的详细信息,请参阅 Execute 成员函数。 有关使用 SQL 直通查询的详细信息,请参阅 SetReturnsRecords 成员函数。

有关相关信息,请参阅 DAO 帮助中的主题“ReturnsRecords 属性”。

CDaoQueryDef::GetSQL

调用此成员函数以检索定义 querydef 所基于的查询的 SQL 语句。

CString GetSQL();

返回值

定义 querydef 所基于的查询的 SQL 语句。

备注

然后,你可能会解析字符串中的关键字、表名等。

有关相关信息,请参阅 DAO 帮助中的主题“SQL 属性”、“Microsoft Jet 数据库引擎 SQL 和 ANSI SQL 的比较”和“在代码中使用 SQL 查询数据库”。

CDaoQueryDef::GetType

调用此成员函数以确定 querydef 的查询类型。

short GetType();

返回值

由 querydef 定义的查询的类型。 有关值,请参阅“注解”。

备注

查询类型由你在创建 querydef 或调用现有 querydef 的 SetSQL 成员函数时在 querydef 的 SQL 字符串中指定的内容设置。 此函数返回的查询类型可以是以下值之一:

  • dbQSelect 选择

  • dbQAction 操作

  • dbQCrosstab 交叉表

  • dbQDelete 删除

  • dbQUpdate Update

  • dbQAppend 追加

  • dbQMakeTable 生成表

  • dbQDDL 数据定义

  • dbQSQLPassThrough 直通

  • dbQSetOperation 联合

  • dbQSPTBulkdbQSQLPassThrough 一起使用以指定不返回记录的查询。

注意

若要创建 SQL 直通查询,请不要设置 dbSQLPassThrough 常量。 这是在创建 querydef 对象并设置连接字符串时由 Microsoft Jet 数据库引擎自动设置的。

有关 SQL 字符串的信息,请参阅 GetSQL。 有关查询类型的信息,请参阅 Execute

CDaoQueryDef::IsOpen

调用此成员函数以确定 CDaoQueryDef 对象当前是否处于打开状态。

BOOL IsOpen() const;

返回值

如果 CDaoQueryDef 对象当前处于打开状态,则为非零;否则为 0。

备注

在使用 querydef 调用 Execute 或创建 CDaoRecordset 对象之前,它必须处于打开状态。 若要将 querydef 置于打开状态,请调用 Create(对于新的 querydef)或 Open(对于现有的 querydef)。

CDaoQueryDef::m_pDatabase

包含指向与 querydef 对象关联的 CDaoDatabase 对象的指针。

注解

如果需要直接访问数据库,请使用此指针,例如,获取指向数据库集合中其他 querydef 或记录集对象的指针。

CDaoQueryDef::m_pDAOQueryDef

包含指向基础 DAO querydef 对象的 OLE 接口的指针。

备注

提供此指针是为了实现与其他类的完整性和一致性。 但是,由于 MFC 完全封装了 DAO querydef,因此你不太可能需要它。 如果你确实使用它,请谨慎使用,特别是,除非你知道你正在执行的操作,否则不要更改指针的值。

CDaoQueryDef::Open

调用此成员函数以打开以前保存在数据库的 QueryDefs 集合中的 querydef。

virtual void Open(LPCTSTR lpszName = NULL);

参数

lpszName
一个字符串,其中包含要打开的已保存 querydef 的名称。 可以使用 CString

备注

打开 querydef 后,可以调用其 Execute 成员函数或使用 querydef 创建 CDaoRecordset 对象。

CDaoQueryDef::SetConnect

调用此成员函数以设置 querydef 对象的连接字符串。

void SetConnect(LPCTSTR lpszConnect);

参数

lpszConnect
一个字符串,其中包含关联的 CDaoDatabase 对象的连接字符串。

备注

连接字符串用于根据需要将附加信息传递给 ODBC 和某些 ISAM 驱动程序。 它不用于 Microsoft Jet (.MDB) 数据库。

提示

使用 ODBC 表的首选方法是将它们附加到 .MDB 数据库。

在执行表示对 ODBC 数据源的 SQL 直通查询的 querydef 之前,使用 SetConnect 设置连接字符串并调用 SetReturnsRecords 以指定查询是否返回记录。

有关连接字符串的结构和连接字符串组件示例的详细信息,请参阅 DAO 帮助中的主题“Connect 属性”。

CDaoQueryDef::SetName

如果要更改非临时查询定义的名称,请调用此成员函数。

void SetName(LPCTSTR lpszName);

参数

lpszName
一个字符串,其中包含关联的 CDaoDatabase 对象中非临时查询的新名称。

注解

querydef 名称是唯一的用户定义名称。 可以在将 querydef 对象附加到 QueryDefs 集合之前调用 SetName

CDaoQueryDef::SetODBCTimeout

调用此成员函数来设置对 ODBC 数据源的查询超时之前的时间限制。

void SetODBCTimeout(short nODBCTimeout);

参数

nODBCTimeout
查询超时之前等待的秒数。

备注

此成员函数允许在连接的数据源上的后续操作“超时”之前覆盖默认秒数。由于网络访问问题、查询处理时间过长等原因,操作可能会超时。 如果要更改查询超时值,请在使用此 querydef 执行查询之前调用 SetODBCTimeout。 (由于 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 的参数集合中的序号位置。 可以通过调用 GetParameterCountGetParameterInfo 来获取此值。

备注

该参数必须已经建立为 querydef 的 SQL 字符串的一部分。 可以按名称或按其在集合中的序号位置访问参数。

指定要设置为 COleVariant 对象的值。 有关在 COleVariant 对象中设置所需值和类型的信息,请参阅类 COleVariant

CDaoQueryDef::SetReturnsRecords

在设置对外部数据库的 SQL 直通查询的过程中调用此成员函数。

void SetReturnsRecords(BOOL bReturnsRecords);

参数

bReturnsRecords
如果对外部数据库的查询返回记录,则传递 TRUE;否则为 FALSE。

备注

在这种情况下,必须创建 querydef 并使用其他 CDaoQueryDef 成员函数设置其属性。 有关外部数据库的说明,请参阅 SetConnect

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 类