数据库操作-VC+ADO常用操作的示例
- 格式:doc
- 大小:37.50 KB
- 文档页数:5
c++ ado 使用参数C++ ADO 使用参数在C++编程中,ADO(ActiveX Data Objects)是一种用于访问数据库的技术。
它提供了一种简单而强大的方法来连接和操作各种类型的数据库。
在使用ADO时,我们经常需要使用参数来执行查询和更新操作。
本文将介绍如何在C++中使用ADO参数,以及如何正确地配置和执行参数化查询。
首先,我们需要包含必要的头文件和命名空间,以便在C++代码中使用ADO。
以下是一个示例:cpp#include <iostream>#include <comdef.h>#include <string>#include <vector>#import "C:\Program Files\CommonFiles\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")using namespace std;在上述代码中,我们使用了`#import`指令导入了ADO库的类型信息。
这使得我们可以在C++代码中使用ADO的对象和方法。
接下来,我们需要创建一个ADO连接对象,并连接到数据库。
以下是一个示例:cpp_ConnectionPtr pConn = NULL;HRESULT hr = pConn.CreateInstance(__uuidof(Connection)); if (SUCCEEDED(hr)){try{pConn->Open("Provider=SQLOLEDB;DataSource=(local);Initial Catalog=MyDatabase;IntegratedSecurity=SSPI;", "", "", adConnectUnspecified);cout << "Connected to database" << endl;}catch (_com_error &e){cout << "Failed to connect to database: " <<e.ErrorMessage() << endl;}}else{cout << "Failed to create connection object" << endl;}在上述代码中,我们使用`CreateInstance`方法创建了一个连接对象,并使用`Open`方法连接到数据库。
VC中使⽤ADO的⽅法ADO中打开⼀个连接:pConnection->ConnectionString = "这⾥的字符串有下⾯四种写法"; //对连接字符串赋值pConnection->Open(ConnectionString,"","",adModeUnknown); //连接数据库第⼆三个参数分别为⽤户的ID与密码,因为在连接字符串ConnectionCstring中已经设置好了,这⾥可以为空。
第四个参数可以取下⾯两个参数:adAsyncConnect,异步打开数据库,在ASP中直接⽤16。
adConnectUnspecified,同步打开数据库,在ASP中直接⽤-1。
ConnectionString根据不同的数据源,分别对应不同的写法(要记下来很困难,可以在VB中利⽤ADO控件先连接好,再将其拷贝在VC中,这样不容易出错) 1)访问Access 2000 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassWord" 2)访问ODBC数据 "Provider=MADASQL;DSN=dsnName;UID=userName;PWD=userPassword;" 3)访问Oracle数据库 “Provider=MSDAORA;Data Sourse=serverName;User ID=userName;Password=userPassword;" 4)访问MS SQL数据库 "Provider=SQLOLEDB,Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=userPassword;" 使⽤ADO开发应⽤程序有两种⽅法,⼀种是直接在应⽤程序中使⽤ADO数据控件,该⽅法最简单,⽆需编写⼀⾏代码即可实现对数据库的访问,另⼀种⽅法是直接使⽤ADO对象实现对数据库的操作,该⽅法较复杂,但可以让程序员更深⼊的控制数据库。
少将ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。
由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。
关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。
让我们直接步入主题,如何掌握ADO这种数据库访问技术ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序(AdoRWAccess),这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示:在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。
下面让我们看看ADO数据库访问技术使用的基本步骤及方法:首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。
可以直接在Stdafx.h文件中加入下面语句来实现:#import "c:\program files\common files\system\ado\msado15.dll" \no_namespace \rename ("EOF", "adoEOF")其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。
当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。
C++中用ODBC和ADO方式数据库编程VC++ 利用ODBC和ADO方式访问数据库的方法及实例大家一起努力学习软件开发,祝你取得成功!企事业管理信息处理的C++的数据库编程第1节数据库的逻辑设计1.1 商品进销存数据库管理项目.......等数据表。
在表的数据结构设计中,字段名尽量采用“可读性”较好的标识符,在程序中看到它,也就知道它实际含义,即“说明”处的文字解释。
下面就是这样做的,在。
1.2 学生成绩管理数据库项目在下面的讨论中,结合本教科书(详见第247页),不妨做“学生成绩管理数据库”,它有三个数据表:学生信息表(学号/C/8,姓名/C/8,性别/C/6,出生日期/C/10,身高/C/4,专业/C/16)表名为Student Table (number , name , sex , birthdate , height, specialty )课程表(课程号/C/8,所属专业/C/20,课程名/C/10,学分/C/4 ,考试时间/C/10 )表名为Course Table (CourseNumber , ForSpecial , CourseName , TotalCredit,TestDate )学生成绩表(学号/C/8,课程号/C/8,成绩/C/6 )(studentNO, courseNo, score )表名为Student Score T able ★上面的数据库,不管是在ACCESS系统中设计的,还是在SQL Server系统中设计的,VC++的使用和SQL语句引用的方式是一样的、效果是一样的。
★C++特别适合做“文本(类型CString)”处理。
在学生成绩管理数据库中,各字段一律定义为“文本型”,当字段实际类型是数值型或要做算术运算时,C++提供了将数值字符串转换为算术型量转换函数:atoi(str)、atol(str)依次将串转换为int、long;而atof(str)转换double或float型。
88 // // RADIO & TELEVISION INFORMATION // 2008年9月 // www.rti.cn目前用于数据库开发的前端工具的开发环境有Delphi、Visual FoxPro、Visual Basic、PowerBuilder以及SQL Server等。
随着Vi-sual C++的数据库开发功能的不断增强,它作为一种方便易用的前端开发工具在实际开发中被广泛应用。
它的优势集中体现在以下几个方面:1)简化的开发过程;2)灵活多变的开发方式;3)更快捷的数据库访问;4)更强的扩展性。
1 Visual C++进行数据库开发的常用技术1.1 ODBC APIODBC(Open Database Connectivity)是客户应用程序访问关系数据库时提供的一个统一的接口,对于不同的数据库,ODBC提供了一套统一的API,使应用程序可以应用所提供的API来访问任何提供了ODBC驱动程序的数据库,并且,ODBC已经成为一种标准,目前所有的关系数据库都提供了ODBC驱动程序,这使ODBC的应用非常广泛,基本上可用于所有的关系数据库。
但由于ODBC只能用于关系数据库,使得利用ODBC很难访问对象数据库及其他非关系数据库。
由于ODBC是一种底层的访问技术,因此,ODBC API可以使客户应用程序能够从底层设置和控制数据库,完成一些高层数据库技术无法完成的功能。
1.2 MFC ODBC(MicrosoftFoundation Class ODBC)ODBC虽然提供了一种统一访问数据库的接口,但是直接使用ODBC API创建应用程序需要编制大量的代码。
所以,VisualC++提供了MFC ODBC类,在MFC ODBC类中封装了ODBC API,提供了面向对象的数据库类,主要有三类:CDatabase、CRecordSet、CRecordView。
这使得创建数据库应用程序的过程大大简化。
使用ADO操作数据库ADO (ActiveX Data Objects) 是一种用于访问数据库的编程技术,它是微软开发的一种组件对象模型(COM)。
ADO 提供了一种统一的方法来访问各种类型的数据源,如关系数据库、Excel 表格、文本文件等。
通过使用 ADO,开发人员可以简化数据库操作,并提高代码的可重复性和可维护性。
ADO 可以在许多编程环境中使用,如 Visual Basic、ASP、C++等,并且可以与不同的数据库进行交互,如 SQL Server、Oracle、MySQL等。
ADO 使用了一种层次化的模型来表示数据库,即连接、命令、记录集和字段。
下面将详细介绍如何使用 ADO 进行数据库操作。
首先,我们需要建立与数据库的连接。
在 ADO 中,可以使用Connection 对象来实现。
连接字符串是连接到数据库所需的关键信息。
例如,在连接到 SQL Server 数据库时,连接字符串通常包含服务器名称、数据库名称、用户名和密码等信息。
以下是一个示例连接字符串的格式:```Provider=SQLOLEDB;Data Source=ServerName;InitialCatalog=DatabaseName;User ID=UserName;Password=Password;```接下来,使用 Connection 对象打开与数据库的连接:```vbDim conn As New ADODB.Connectionconn.Open "连接字符串"``````vbcmd.ActiveConnection = conn```在执行命令之前,我们需要创建一个 Recordset 对象来存储查询结果。
Recordset 对象可以看作是一个二维表,其中包含了从数据库中返回的数据。
以下是创建 Recordset 对象的代码:```vbDim rs As New ADODB.Recordsetrs.Open cmd, , adOpenStatic, adLockReadOnly```在获取了数据库查询结果后,我们可以使用 rs 对象来访问这些数据。
ADO数据库操作在ADO(ActiveX Data Objects)中,可以使用各种方法和属性来执行数据库操作。
ADO是一种在Microsoft平台上用于访问数据的技术,可以用于连接到各种数据库系统,包括Microsoft Access、SQL Server、Oracle等。
首先,要使用ADO进行数据库操作,我们需要建立与数据库的连接。
可以使用ADO的Connection对象来实现。
例如,对于Microsoft Access 数据库,可以使用以下代码来建立连接:```Dim conn As New ADODB.Connectionconn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\path\to\database.mdb"conn.Open```在上面的代码中,我们创建了一个Connection对象,并设置了连接字符串来指定数据库的路径。
然后,我们调用Open方法来打开连接。
建立连接后,就可以执行各种数据库操作了。
以下是一些常见的数据库操作方法:1.执行SQL查询:```Dim rs As New ADODB.Recordsetrs.Open "SELECT * FROM table", conn```上面的代码中,我们创建了一个Recordset对象,并使用Open方法执行了一个SQL查询。
2.插入记录:```conn.Execute "INSERT INTO table (field1, field2) VALUES ('value1', 'value2')"```上面的代码中,我们使用Execute方法执行了一个插入记录的SQL语句。
3.更新记录:```conn.Execute "UPDATE table SET field1 = 'new value' WHERE condition"```上面的代码中,我们使用Execute方法执行了一个更新记录的SQL语句。
VC++使用ADO开发ACCESS数据库作者:韩耀旭本文通过实例演示如何在VC++中使用ADO进行ACCESS数据库编程,并对涉及到的几个概念进行详细解释。
本文不对ADO和ACCESS的基本概念进行详细解释,主要包括以下内容:第一部分 ADO和ADOX到底是什么,二者的作用和区别建立数据库第二部分 ADOX创建ACCESS数据库第三部分ADO创建ACCESS数据库的表第四部分使用_ConnectionPtr接口开发ACCESS数据库第五部分使用_RecordsetPtr接口开发ACCESS数据库第一部分ADO和ADOX到底是什么,二者的作用和区别ADO是Microsoft 最新推出的数据库访问的高层软件接口。
它和Microsoft 以前的数据库访问接口DAO、RDO相比具有更大的灵活性,使用也更方便,开发效率大为提高。
ADOX是核心ADO对象的扩展库。
它提供的附加对象可用于创建、修改和删除模式对象,如表和过程。
要使用ADOX,则应建立对ADOX类型库的引用。
ADOX 库文件名为 Msadox.dll。
通俗地讲,ADO是访问数据库的一种接口,可以使用它方便地进行数据库编程。
而ADOX是微软对ADO功能的扩展,比如:可以ADOX创建数据库(而ADO 没有创建数据库的功能)。
第二部分ADOX创建ACCESS数据库用ADOX创建access数据库方法很简单,只需要创建一个Catalog对象,然后调用它的Create方法就可以了。
例程ADOXCreateDatabase演示如何使用ADOX创建一个ACCESS数据库。
打开VC++ 6.0,新建一个基于对话框的工程ADOXCreateDatabase。
在对话框IDD_ADOXCREATEDATABASE_DIALOG中添加一个编辑框IDC_DBNAME和一个按钮IDC_BTN_CREATE,编辑框用以输入数据库名称。
使用ClassWizard给编辑框创建一个CString变量m_dbName。
一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。
ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。
ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。
ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。
之所以称为 ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。
OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。
OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。
OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。
也就是说,OLE DB 并不局限于 ISAM、Jet 甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。
在实际应用中,这种多样性意味着可以访问驻留在 Excel 电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如 Microsoft Exchange 中的数据。
但是,OLE DB 应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。
您需要的API 应该是一座连接应用程序和OLE DB 的桥梁,这就是 ActiveX Data Objects (ADO)。
二、在VC中使用ADO(开发步骤如下:)1、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。
代码如下所示://用#import引入ADO库文件#import "c:\program files\common files\system\ado\msado15.dll" \no_namespaces \rename("EOF" adoEOF")这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。
VC用ADO打开和关闭数据库初始化:1.找到"stdafx.h"文件,并添加代码:#import "C:\WINDOWS\system32\msado15.dll" \no_namespace \rename ("EOF", "adoEOF")解释:"EOF"-"End Of Line"即是否为数据库的最后一行。
2.在"Dlg.h"文件中进行对象定义:public:_ConnectionPtr m_Connection; //连接数据库_RecordsetPtr m_pRecordset; //记录集解释:“m_Connection”负责数据库连接的操作,以及使用m_Connection.Execute()等操作;“m_pRecordset”负责进行数据集的绑定,一般使用为m_pRecordset.Open()等操作;3.在"Dlg.cpp"找到"OnInitDialog()"函数,并添加代码如下:SetIcon(m_hIcon, FALSE); // 设置小图标///数据库初始化部分::CoInitialize(NULL); //初始化COM环境,只在对话框建立的时候才进行HRESULT hr;try{hr = m_Connection.CreateInstance("ADODB.Connection"); //初始化Connection对象实例,不随时释放if(SUCCEEDED(hr)){hr = m_Connection->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyDBAccess.mdb",L"",L"",adModeUnknown);}m_pRecordset.CreateInstance("ADODB.Recordset"); //初始化对象数据集,不随时释放m_pRecordset->Open("SELECT * FROM 雇员",m_Connection.GetInterfacePtr(),adOpenDynamic,adLockOptim istic,adCmdText); //随时可以使用m_pRecordset->Close()进行关闭}catch(_com_error &e){CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息}解释:::CoInitialize(NULL); -- 进行COM口的初始化,非常重要的一步;m_Connection.CreateInstance("ADODB.Connection"); --实例化"连接";m_Connection->Open(); --打开连接;m_pRecordset.CreateInstance("ADODB.Recordset"); --实例化"数据集";m_pRecordset->Open(); --绑定数据集4.在"WM_CLOSE"对应的"OnClose()"函数中进行"释放"操作:m_pRecordset->Close();m_Connection->Close();::CoUninitialize(); //关闭COM环境CDialog::OnClose();解释:之所以将这部分归结到初始化中,原因在于此部分实在是很重要,并且容易遗忘,一旦忽略此部分,系统将持续报错.(关闭连接,关闭数据集,关闭COM环境)到此为止,整个的初始化部分就完成了摘自踏雪无痕的专栏。
VC中利用ADO共同实现数据库的操作(以修正其中的错误)ADO是应用层的编程接口,它通过OLE DB提供的COM接口访问数据,它适合于各种客户机/服务器应用系统和基于Web的应用,尤其在一些脚本语言中访问数据库操作是ADO的主要优势。
ADO 是一套用自动化技术建立起来的对象层次结构,它比其他的一些对象模型如DAO(Data Access Object)、RDO(Remote Data Object)等具有更好的灵活性,使用更为方便,并且访问数据的效率更高。
SQL是强大的数据库操作系统,通过ADO和SQL语句的配合,我们可以的实现对数据库的一系列操作,例如创建数据库、创建表、创建索引,实现数据库的多重查询、高级查询和数据的汇总等技术。
下面通过例程介绍如何通过ADO和SQL语句的配合实现对数据库的操作。
第一步:通过Access创建数据库test.mdb。
第二步:创建单文档工程testado,所有的选项都取默认值。
第三步:COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:BOOL CADOTest1App::InitInstance(){AfxOleInit();......第四步:用#import指令引入ADO类型库我们在stdafx.h中加入如下语句:#import "c:\program files\common files\system\ado\msado15.dll"no_namespace rename("EOF","adoEOF")这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。
第五步:在testadoview.h中定义一个指向Connection对象的指针:_ConnectionPtr m_pConnection;第六步:添加如下代码:void CTestadoView::OnInitialUpdate(){CView::OnInitialUpdate();HRESULT hr;try{hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=test.mdb","","",adModeUnknown);///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; }}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}}第七步:在析构函数中关闭Connection对象并将其释放,代码如下:CTestadoView::~CTestadoView(){m_pConnection->Close();m_pConnection.Release();}第八步:添加菜单项"创建数据库表",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnAddtable(){_variant_t RecordsAffected;m_pConnection->Execute("CREATE TABLE new(ID INTEGER,username TEXT,old INTEGER)",&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"添加表",我们可以发现数据库中已经添加了一个表new,其中的字段有我们定义的字段。
第九步:添加菜单项"删除数据库表",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnDeleteTable(){_variant_t RecordsAffected;m_pConnection->Execute("DROP TABLE new",&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"删除表",我们可以发现数据库中刚才添加的表new已被删除。
第十步:添加菜单项"添加一列",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnAddColumn(){_variant_t RecordsAffected;m_pConnection->Execute("ALTER TABLE new ADD newcolumn1INTEGER",&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"添加一列",我们可以发现数据库中刚才添加的表new中已添加了一个新列。
第十一步:添加菜单项"删除一列",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnDelColumn(){_variant_t RecordsAffected;m_pConnection->Execute("ALTER TABLE new DROP newcolumn1INTEGER",&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"删除一列",我们可以发现数据库中刚才添加的表new中的新列已被删除。
第十二步:添加菜单项"添加记录",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnAddRecord(){_variant_t RecordsAffected;for(int i = 1;i < 10; i ++){CString strSQL;strSQL.Format("INSERT INTO new(ID,username,old) VALUES (%d,'Washington',%d)",i,i*9);m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"添加记录",我们可以发现数据库中刚才添加的表new中添加了九条新的记录。
第十三步:添加菜单项"old字段加1",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnOldAddone(){_variant_t RecordsAffected;m_pConnection->Execute("UPDATE new SET ld=old+1",&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"old记录加1",我们可以发现数据库中刚才添加的表new 中的九条新的记录的old字段都自动加1。
第十四步:添加菜单项"统计记录数目",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnTotalRecords(){_RecordsetPtr m_pRecordset;_variant_t RecordsAffected;m_pRecordset =m_pConnection->Execute("SELECT COUNT(*) FROM new where ID > 0",&RecordsAffected,adCmdText);_variant_t vIndex = (long)0;_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量m_pRecordset->Close();///关闭记录集CString Message;Message.Format("共有%d条记录",vCount.lVal);AfxMessageBox(Message);///显示当前记录条数}运行程序,执行菜单当中的命令"统计记录数目",我们可以得到数据库中记录的数目。
第十五步:添加菜单项"设置ID为索引",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnSetIdIndex(){_variant_t RecordsAffected;m_pConnection->Execute("CREATE UNIQUE INDEX id ONnew(ID)",&RecordsAffected,adCmdText);}运行程序,执行菜单当中的命令"设置ID为索引",我们可以发现数据库中ID被设置为索引。
第十六步:添加菜单项"数据汇总"、"old字段的总和"、"old字段的均值"、"old的最小值"、"old字段的最大值",并添加相应的消息处理函数,然后添加代码如下:void CTestadoView::OnOldMax(){_RecordsetPtr m_pRecordset;_variant_t RecordsAffected;m_pRecordset =m_pConnection->Execute("select MAX(old) fromnew",&RecordsAffected,adCmdText);_variant_t vIndex = (long)0;_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量m_pRecordset->Close();///关闭记录集m_pRecordset.Release();CString Message;Message.Format("最大值是%d",vCount.lVal);AfxMessageBox(Message);}void CTestadoView::OnOldMin(){_RecordsetPtr m_pRecordset;_variant_t RecordsAffected;m_pRecordset =m_pConnection->Execute("select MIN(old) fromnew",&RecordsAffected,adCmdText);_variant_t vIndex = (long)0;_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量m_pRecordset->Close();///关闭记录集m_pRecordset.Release();CString Message;Message.Format("最小值是%d",vCount.lVal);AfxMessageBox(Message);}void CTestadoView::OnOldTotal(){_RecordsetPtr m_pRecordset;_variant_t RecordsAffected;m_pRecordset =m_pConnection->Execute("select SUM(old) from new",&RecordsAffected,adCmdText);_variant_t vIndex = (long)0;_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量m_pRecordset->Close();///关闭记录集m_pRecordset.Release();CString Message;Message.Format("总和是%d",(long)vCount);AfxMessageBox(Message);}void CTestadoView::OnOldAverage(){_RecordsetPtr m_pRecordset;_variant_t RecordsAffected;m_pRecordset =m_pConnection->Execute("select AVG(old) from new",&RecordsAffected,adCmdText);_variant_t vIndex = (long)0;_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量m_pRecordset->Close();///关闭记录集m_pRecordset.Release();CString Message;Message.Format("平均值是%d",(long)vCount);AfxMessageBox(Message);}}运行程序,执行菜单当中的汇总命令,我们可以得到相关的汇总信息。