更新时间:2024-08-28 03:28
CDaoQueryDef对象表示了一个查询定义(querydef),查询定义通常保存在数据库中。查询定义是一个包含了说明查询的SQL语句极其属性(如创建日期、ODBC超时设置等)的数据存取对象,也可以创建临时的不存储在数据库中的临时查询定义对象,但把那些经常用到的查询定义保存在数据库中能够提高效率。CDaoDatabase对象维护了一个称为QueryDefs的集合,其中就记录了保存下来的查询定义。
DAO数据库类和MFC中基于ODBC的数据库类是截然不同的。所有的DAO数据库类的命名中都包括CDao前缀。但仍可以采用DAO数据库类存取ODBC数据源。一般说来,在MFC中,基于DAO的类的处理能力比基于ODBC的类的处理能力要强;基于DAO的类可以通过ODBC数据源对应的数据库引擎存取ODBC数据源。基于DAO的类也支持数据定义语言(DDL)一类的操作,如通过类在数据库中建表,而勿须直接调用DAO。
查询定义对象可用来存取当前保存的查询或者创建一个将保存的查询或临时查询。
在使用完查询对象之后,需要调用它的成员函数Close关闭它,然后销毁该对象。
创建待保存的查询的最简单的办法是采用Microsoft Access创建并把他们保存在数据库中。以后就可以在MFC代码中打开并使用它们了。
使用ODBC表时最好的方式是把它们与一个Microsoft Jet数据库联系起来。
#include
查询定义对象可用于以下目的:
查询定义对象可用于多种类型的查询,包括选择、动作查询、交叉表(crosstab)、删除、更新、添加、造表、数据定义、SQL直通查询和批量查询等。查询的类型是由SQL语句的内容决定的。有关查询类型的内容,请参阅成员函数Execute和GetType。记录集通常用于返回行的查询,一般是那些使用了SELECT匜ROM的查询。Execute一般用于批量操作。要了解更详细的信息,请参阅Execute和CDaoRecordset的说明。
使用查询定义对象创建CDaoRecordset对象时,一般都是象上面介绍的那样创建和打开一个查询定义对象。然后构造一个记录集对象,在调用CDaoRecordset:: Open时传一个指向查询定义对象的指针。传递的查询定义必须是处于打开状态的。调用Open或Create都会使查询定义对象处于打开状态。
查询定义对象是使用外部数据库引擎本地SQL方言的最好方法。例如,可以创建一个Transact SQL(Microsoft SQL Server中采用了)查询并存在查询定义对象中。在使用一个不是基于Microsoft Jet数据库引擎的SQL查询时,必须提供一个指明外部数据源的连接串。具有有效连接串的查询忽略本地数据库引擎,而直接把查询发送到外部数据库服务器进行处理。