ado数据库编程实例——信息管理系统
- 格式:docx
- 大小:124.49 KB
- 文档页数:6
基于学生信息管理系统的设计与实现杨平乐;刘树森;高雅【摘要】面向高校的学生信息管理系统是高校人事管理的无纸化、信息化进程的重要战略步骤,其系统直接决定了高校信息化进程.程序采取三层架构,有较强的可扩展性、稳定性.该系统采用了.NET 技术,应用UML建模语言进行系统分析和设计,开发语言采用了C#,运用技术进行数据处理连接,并运用SQL Server 2008实现数据高效存储管理.系统基本实现了预定信息化目标.在系统长时间压力测试和可用性测试上完成既定任务,进一步强化了高效的信息处理能力.【期刊名称】《计算机技术与发展》【年(卷),期】2010(020)005【总页数】4页(P238-241)【关键词】信息管理系统;.NET;开发;"盐"值;工作流【作者】杨平乐;刘树森;高雅【作者单位】江苏科技大学,江苏,张家港,215600;江苏科技大学,江苏,张家港,215600;江苏科技大学,江苏,张家港,215600【正文语种】中文【中图分类】TP3120 引言目前,高校信息化进程进入了一个较快的普及阶段。
共享数据,协同协作成为了管理中的一个主要课题。
在信息化过程中的软件是多种多样的,然而目前高校使用的系统是广泛的、非针对性的,往往由一些软件公司模板化生产而来,并非面向高校的特殊使用而设计,其本身的复杂度可用性都有一定的局限性,因此在使用中有诸多不便之处[1],如:操作上偏重于工作流方式,大大增加了数据处理的复杂性;一些较为常用的功能没有清晰的实现,给使用人员带来了一定的不便。
该系统特别针对高校的教学教务量身定做研发,程序界面友好,常用功能突出,性能优异。
根据各个办公室、学工办的不同需要,分配不同权限,满足日常查询、修改、存储学生各项数据的要求[2]。
特别是在稳定性方面,相比于已有的VFP、C++开发的老系统有了长足的进步,提高了教师用户的体验。
在安全性方面,该软件考虑了校园用户结构的特殊要求,结合.NET简单易用的加密空间算法,做足软件的保密性。
实验内容创建一个基于ClistView试图的单文档应用程序Ex_ADO,主要完成下列任务或实现下列功能。
(1)用Access创建一个数据库student.mdb,添加数据表student,如表T16.1所示。
表上部分是数据表的记录内容,下部分是数据的结构内容。
(2)表T16.1学生基本信息表(student) 及其表结构姓名studentname 学号sudentno性别xb出生年月birthday专业special李明21010101 True 1985-1-1 电气工程及其自动化王玲21010102 False 1985-1-1 电气工程及其自动化张芳21010501 False 1985-1-1 机械工程及其自动化陈涛21010502 True 1985-1-1 机械工程及其自动化序号字段名称数据类型字段大小小数位字段含义1 Studentname 文本20 姓名2 Studentno 文本10 学号3 Xb 是/否性别4 Birthday 日期/时间出生年月5 special 文本50 专业(2)在主菜单中添加“学生信息(&S)”顶层菜单,在该菜单添加“添加学生(&U)”子菜单。
当选择“添加学生(&U)”子菜单后,出现“学生信息”对话框,单击“添加”按钮后,记录添加到student 表中,并自动更新列表视图的列表项。
(3 ) 在列表视图的列表项中,单击鼠标右键,弹出“学生信息”对话框,如图T16.1所示。
单击“修改”按钮,student表中相关记录被修改,同时更新列表视图的列表项。
(4)若单击列表视图的列表头(标题头)时,使得列表视图按该列的内容对列表项进行从小到大的排序。
实验准备和说明(1)在教程第8章全部讲授后进行本次实验。
(2)用ADO实现数据库表的添加和修改功能,构思本机上机所需要的程序。
实验步骤1创建工作文件夹打开计算机,在“D:\VisualC++程序\LiMing”文件夹中创建一个新子文件夹“实验16”。
数据库编程1、的相关概念。
Microsoft的新一代技术,是ADO组件的后继者。
主要目的是在.NET Framework平台存取数据。
提供一致的对象模型,可以存取和编辑各种数据源的数据,即对这些数据源,提供了一致的数据处理方式。
保存和传递数据是使用XML格式。
可实现与其他平台应用程序以XML文件进行数据交换。
2、数据访问类库的名称空间针对不同的数据源,使用不同名称空间的数据访问类库,即数据提供程序。
常用的数据源包括四种:Microsoft SQL Server数据源:使用System.Data.SqlClient名称空间。
OLEDB数据源:使用System.Data.OleDb名称空间。
ODBC数据源:使用System.Data.Odbc名称空间。
Oracle数据源:使用System.Data.OracleClient名称空间要使用 来访问数据库,需要将相应的名称空间导入到应用程序中,如下:System.Data是通用的名称空间,其中包含组成ADO.NET核心体系结构的所有类。
System.Data.Oledb 名称空间供 管理提供程序访问支持OleDb的数据源时使用。
System.Data.SQLClient 名称空间供 SQL Server管理提供程序使用。
该名称空间是专为 Microsoft SQL Server 而设计的,对于以前版本的 SQL Server,可以提高其性能。
如:using System.Data;using System.Data. SqlClient;System.Data.OleDb和System.Data.SqlClient名称空间的类名称相同,只是字头不同。
之所以分成两组类,主要目的是提供一组最佳化SQL Server数据库存取的类。
OleDb字头的类是使用OLEDB提供者数据源的数据库。
例如Access和Oracle等数据库。
Sql字头的类只能使用在SQL Server7.0以上版本,直接和服务器端的SQL Server通信,因为不通过OLE DB和ODBC,所以可以明显提升整体的执行效率。
案例分析(第五章 ADO)案例分析以典型示例为据,重点分析程序特点及注意事项,点击每例后的(看运行结果)可以在本环境中显示结果,增强了案例的直观性。
本部分重点介绍了以下几个案例:数据库简单筛选操作、动态信息的分面列表、具有分页功能的留言簿、网站精确查询系统、网站模糊查询系统、利用SQL Server存储过程实现密码验证、在线考试系统例子5-1:输出数据库的表头(看运行结果)<%Set conn = Server.CreateObject("ADODB.Connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("sample.mdb")Set rs = conn.Execute( "成绩单" )%><HTML><BODY bgcolor="#6699dd">Sample.mdb 数据库“成绩单”数据表七栏的表头:<UL><%For I = 0 to 6Response.Write "<LI>" & rs(I).NameNext%><% rs.close %></UL></BODY></HTML>注:(1)程序输出结果为“成绩单”数据表的七个列名(第0到6列);(2)程序创建连接对象conn,并调用conn的Open方法打开一个与Access 数据库sample.mdb的连接;(3)再通过连接对象conn的Execute方法获得记录集rs,循环输出其列名(字段名);(4)最后关闭记录集rs.例子5-2:动态输出表头(看运行结果)<%Set conn = Server.CreateObject("ADODB.Connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("Sample.mdb")Set rs = conn.Execute( "成绩单" )%><HTML><BODY bgcolor="#6699dd">Sample.mdb 数据库"成绩单"数据表所有栏的表头!<UL><%For I = 0 to rs.Fields.Count - 1Response.Write "<LI>" & rs(I).NameNext%><% rs.close %></UL></BODY></HTML>注:(1)程序输出结果为“成绩单”数据表的全部列名;(2)第一条语句建立一个Connection连接对象;(3)第二条语句利用Connection对象打开数据库;(4)第三条语句利用其Execute方法产生一个记录集对象rs;(5)然后以列表的方式循环输出rs的全部列名。
用ADO进行数据库编程ActiveX数据对象(ADO)是OLE DB上面的高层数据库API。
我们在C++程序中也可以调用ADO。
本文将在VC 6.0环境下做一个小小的例子解释如何使用ADO。
1. 生成应用程序框架并初始化OLE/COM库环境创建一个标准的MFC AppWizard(exe)应用程序,然后在应用程序类的InitInstance函数中初始化OLE/COM库(因为ADO库是一个COM DLL库)。
BOOL CADOTestApp::InitInstance(){ //初始化OLE/COM库环境AfxOleInit();}2. 引入ADO库文件使用ADO前必须在工程的stdafx.h文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。
代码如下:#include 〈comdef.h〉#import "c:\program files\common files\system\ado\msado15.dll"no_namespacerename ("EOF","adoEOF")头文件comdef.h使我们的应用程序能够使用Visual C++中的一些特殊COM支持类,这些类使得处理OLE自治更为容易一些,OLE自治是ADO使用的数据类型。
后三行使用#import指令在我们的应用程序中输入ADO类库定义。
ADO类的定义是作为一种资源存储在ADO DLL(msado15.dll)中,在其内部称为类型库。
类型库描述了自治接口,以及C++使用的COM vtable接口。
当使用#import指令时,在运行时Visual C++需要从ADO DLL中读取这个类型库,并以此创建一组C++头文件。
这些头文件具有.tli 和.tlh扩展名,读者可以在项目的目录下找到这两个文件。
在C++程序代码中调用的ADO类要在这些文件中定义。
程序的第三行指示ADO对象不使用名称空间。
基于ADO访问的管理信息系统的设计
徐华中;李丹;闫树
【期刊名称】《武汉理工大学学报(信息与管理工程版)》
【年(卷),期】2004(026)004
【摘要】阐述了ADO访问及Client/Server结构的基本原理及特点;介绍了管理信息系统的一般设计方法;并以住房管理信息系统的设计为例,给出了该系统的技术实现特点.
【总页数】4页(P92-95)
【作者】徐华中;李丹;闫树
【作者单位】武汉理工大学,自动化学院,湖北,武汉,430070;武汉理工大学,自动化学院,湖北,武汉,430070;武汉理工大学,自动化学院,湖北,武汉,430070
【正文语种】中文
【中图分类】C931.6
【相关文献】
1.基于ADO数据库访问技术的会计电算化系统设计与实现 [J], 阎栋
2.基于ADO远程数据访问的设备管理信息系统的开发 [J], 贺江华;刘延林;刘小军
3.基于数据库访问实例的设计实现与应用 [J], 陈旻
4.基于Hadoop平台用户行为的访问控制设计 [J], 李明东;王英;付志鹏
5.基于ADO访问技术的茶叶杀青机\r数据库的设计 [J], 宋扬扬;李为宁;李兵
因版权原因,仅展示原文概要,查看原文内容请购买。
数据库编程1、的相关概念。
Microsoft的新一代技术,是ADO组件的后继者。
主要目的是在.NET Framework平台存取数据。
提供一致的对象模型,可以存取和编辑各种数据源的数据,即对这些数据源,提供了一致的数据处理方式。
保存和传递数据是使用XML格式。
可实现与其他平台应用程序以XML文件进行数据交换。
2、数据访问类库的名称空间针对不同的数据源,使用不同名称空间的数据访问类库,即数据提供程序。
常用的数据源包括四种:Microsoft SQL Server数据源:使用System.Data.SqlClient名称空间。
OLEDB数据源:使用System.Data.OleDb名称空间。
ODBC数据源:使用System.Data.Odbc名称空间。
Oracle数据源:使用System.Data.OracleClient名称空间要使用 来访问数据库,需要将相应的名称空间导入到应用程序中,如下:System.Data是通用的名称空间,其中包含组成ADO.NET核心体系结构的所有类。
System.Data.Oledb 名称空间供 管理提供程序访问支持OleDb的数据源时使用。
System.Data.SQLClient 名称空间供 SQL Server管理提供程序使用。
该名称空间是专为 Microsoft SQL Server 而设计的,对于以前版本的 SQL Server,可以提高其性能。
如:using System.Data;using System.Data. SqlClient;System.Data.OleDb和System.Data.SqlClient名称空间的类名称相同,只是字头不同。
之所以分成两组类,主要目的是提供一组最佳化SQL Server数据库存取的类。
OleDb字头的类是使用OLEDB提供者数据源的数据库。
例如Access和Oracle等数据库。
Sql字头的类只能使用在SQL Server7.0以上版本,直接和服务器端的SQL Server通信,因为不通过OLE DB和ODBC,所以可以明显提升整体的执行效率。
ADO数据库编程中大型的数据库管理信息系统(MIS)的开发,一般很少用VC来完成(因为开发效率低,不过运行效率很高),而是使用VB,C#,Java等开发效率较高的语言。
但小型MIS系统完全可以用VC来实现。
下面讲解VC访问数据库的基本技术。
一、四种数据库访问技术●ODBC(Open Database Connectivity)开放式数据库连接,是一种用来在数据库管理系统(DBMS)中存取数据的标准应用程序接口。
有ODBC API和MFC ODBC两种开发技术。
●DAO(Data Access Object )即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。
和ODBC 一样,他们都是Windows API的一部分,可以独立于(DBMS)进行数据库的访问。
DAO跟ODBC的区别是:访问机制不同!ODBC工作依赖于数据库制造商(MS SQL Server,Oracle,Sybase等)提供的驱动程序。
使用ODBC API的时候,Windows的ODBC管理程序,把对数据库的访问请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作。
DAO则绕开中间环节,直接使用数据库引擎(Microsoft Jet Database Engine)提供的各种对象进行工作。
速度比ODBC快。
●OLE DB(Object Link and Embedding Database)非常底层,基于COM接口技术;功能强大灵活,但编程麻烦,使用ADO只需要3-5行代码的事情,用OLEDB却需要将近200-300行代码才能完成。
WinCE目前不支持ADO,但支持OLEDB。
推荐阅读文章:VC++实战OLEDB编程(一)至(九)/blog/static/571534632008101083957499/●ADO(ActiveX Data Object)是建立在OLE DB之上的高层数据库访问技术,是对OLEDB的封装,微软为我们提供了丰富的COM组件(包括ActiveX)来访问各种关系型/非关系型数据库。
1.在StdAfx.h中添加#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") 其中:#import生成文件 msado15.tlh,默认是有namespace ADODB { } 所有内容都包在这个名字空间中。
用了no_namespace则生成的头文件中没有namespace,所有内容是全局的。
rename的意思就是改名了,rename("EOF","adoEOF")将EOF改名为adoEOF,以免和C语言里的EOF重名。
End Of File,在电脑的术语缩写通常为EOF,在作业系统决定资料源无更多的资料可读取。
资料源通常称为档案或串流。
在C语言,或更精确地说成C标准函式库,档案存取或其它I/O 功能可能传回等于象征符号值(巨集) EOF 指示档案结束的情形发生。
实际上EOF 的值通常为-1,但它依系统有所不同。
巨集EOF 会在编译原始码前展开实际值给预处理器。
2.画界面,设置属性,为组件设置成员变量3.在BOOL CADODlg::OnInitDialog()中初始化List控件m_Grid.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE |LVS_EX_GRIDLINES); m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,110,0); m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1); m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,110,2);m_Grid.InsertColumn(3,"学历",LVCFMT_LEFT,110,3); AddToGrid();4.Ado数据库连接函数 void CADOConn::OnInitADOConn() { //1.初始化COM环境 ::CoInitialize(NULL); try { //2.创建连接对象实例m_pConnection.CreateInstance("ADODB.Connection"); //3.设置连接字符串CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\ uid=;pwd=;DBQ=shujuku.mdb;"; //DBQ后不要空格,否则会导致连接失败//4.使用Open方法连接数据库m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnKnown); } //捕获异常catch(_com_error e) { //显示错误信息AfxMessageBox(e.Description()); } } 其中:使用ADO时要先初始化COM环境,把::CoInitialize(NULL)放在所有ADO调用的前面,一般放在函数BOOL CMyApp::InitInstance()里面,初始化COM 环境的目的是使调用COM的API工作正常,也就是在COM操作之前调用 ::CoInitialize或 ::CoInitializeEx就可以。
利用Delphi和ADO技术开发教学信息管理系统
李全彬;黄昶
【期刊名称】《智能计算机与应用》
【年(卷),期】2005(000)005
【摘要】通过一个教学信息管理系统的开发实例,详细讲述了Delphi中利用ADO 技术开发数据库应用系统的方法,并提供了Dbgrid数据导出到Excel的详细代码.【总页数】3页(P9-11)
【作者】李全彬;黄昶
【作者单位】华东师范大学信息学院电子系在读硕士研究生,上海200062;徐州师范大学物理系讲师,221009;不详
【正文语种】中文
【中图分类】TP3
【相关文献】
1.利用Delphi和ADO技术开发学籍管理信息系统 [J], 马桂芳
2.Delphi利用ADO+RemObject SDK构架Excel数据服务器(四)——
Delphi+RemObjectcs创建灵活的Excel客服端应用 [J], 闰海忠
3.基于Delphi的利用ADO访问Excel文件的技术与实现 [J], 吴锋珍
4.基于Delphi下的ADO技术开发Oracle数据库的应用 [J], 熊曾刚;张学敏;王时绘
5.Delphi中利用ADO实现Excel数据导入 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
2002年10月 晋东南师范专科学校学报Oct.,2002 第19卷 第5期 Journal of Jindongnan Teachers CollegeVol.19,No.5收稿日期:2002—08—20作者简介:马桂芳(1974— ),女,山西长治人,讲师,硕士,主要从事管理信息系统和数据库的研究。
利用Delphi 和ADO 技术开发学籍管理信息系统马桂芳(晋东南师专计算机系,山西长治 046011) 摘 要:在开发学籍管理系统的过程中,采用ADO 技术直接访问数据库。
在与数据库的连接、对数据库的动态操作、及动态生成报表方面遇到了一些问题,本文针对这些问题提出了较好的解决方法。
关键词:Delphi ;ADO ;管理信息系统;SQL中图分类号:TP315 文献标识码:A 文章编号:1009-0266(2002)05-0046-02 1 前言随着经济的飞速发展和社会竞争的日益激烈,人们对信息的及时性、准确性都提出了更高的要求。
学籍信息管理是学校工作的一个重要方面。
目前仍然有许多学校依靠手工来进行管理。
纯粹的手工管理效率低,既耗费人力,又耗费时间,显然不能适应现代经济发展的需要。
建立自己的管理信息系统(MIS )来代替手工劳动已成为大势所趋。
学校充分利用现有技术和条件,建立一套适合自己的学籍管理系统,可以使学籍管理工作更加规范化、科学化,使工作效率大大提高,工作量大幅度减少,同时也可以准确及时地获取所需信息,为决策层作出快速有效的决策提供了可靠的信息保障。
管理信息系统是以计算机为工具,对组织内部管理诸要素进行优化组合,使人流、物流、资金流和信息流处于最佳状态,以最少的资源投入获得最满意的综合效益的现代化管理系统。
2 Delphi 简介Delphi 是一种可视化开发工具,支持面向对象开发方法,具有继承性,支持OL E 服务器和控制器,并且有很强的多种数据库支持。
另外,由于它提供了丰富的数据库访问和操作控件以及数据库报表工具,因此能够大大提高开发数据库应用程序的效率。
1.在StdAfx.h中添加#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")其中:#import生成文件msado15.tlh,默认是有namespace ADODB {}所有内容都包在这个名字空间中。
用了no_namespace则生成的头文件中没有namespace,所有内容是全局的。
rename的意思就是改名了,rename("EOF","adoEOF")将EOF改名为adoEOF,以免和C语言里的EOF重名。
End Of File,在电脑的术语缩写通常为EOF,在作业系统决定资料源无更多的资料可读取。
资料源通常称为档案或串流。
在C语言,或更精确地说成C标准函式库,档案存取或其它I/O 功能可能传回等于象征符号值(巨集) EOF 指示档案结束的情形发生。
实际上EOF 的值通常为-1,但它依系统有所不同。
巨集EOF 会在编译原始码前展开实际值给预处理器。
2.画界面,设置属性,为组件设置成员变量3.在BOOL CADODlg::OnInitDialog()中初始化List控件m_Grid.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,110,0);m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1);m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,110,2);m_Grid.InsertColumn(3,"学历",LVCFMT_LEFT,110,3);AddToGrid();4.Ado数据库连接函数void CADOConn::OnInitADOConn(){ //1.初始化COM环境::CoInitialize(NULL);try{ //2.创建连接对象实例m_pConnection.CreateInstance("ADODB.Connection");//3.设置连接字符串CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\uid=;pwd=;DBQ=shujuku.mdb;"; //DBQ后不要空格,否则会导致连接失败//4.使用Open方法连接数据库m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnKnown);}//捕获异常catch(_com_error e){//显示错误信息AfxMessageBox(e.Description());}}其中:使用ADO时要先初始化COM环境,把::CoInitialize(NULL)放在所有ADO调用的前面,一般放在函数BOOL CMyApp::InitInstance()里面,初始化COM环境的目的是使调用COM的API工作正常,也就是在COM操作之前调用::CoInitialize或::CoInitializeEx就可以。
位置不重要5.断开数据库连接void CADODlg::ExitConnect(){//关闭记录集和连接if(m_pRecordset!=NULL)m_pRecordset->Close();m_pConnection->Close();}6.将数据库内容显示在List控件中void CADODlg::AddToGrid(){//连接数据库OnInitADOConn();//设置查询字符串_bstr_t bstrSQL = "select * from employees order by 编号desc";//创建记录集指针对象实例m_pRecordset.CreateInstance(__uuidof(Recordset));//打开记录集m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);while(!m_pRecordset->adoEOF){m_Grid.InsertItem(0,"");m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("编号"));m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("姓名"));m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("性别"));m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("学历"));//将记录集指针移动到下一条记录m_pRecordset->MoveNext();}//断开数据库连接ExitConnect();}7.编写List控件响应函数,点击控件中的item,subitem内容会分别显示在相应编辑框中void CADODlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){pos = m_Grid.GetSelectionMark();m_ID = m_Grid.GetItemText(pos,0);m_Name = m_Grid.GetItemText(pos,1);m_Sex = m_Grid.GetItemText(pos,2);m_Culture = m_Grid.GetItemText(pos,3);UpdateData(FALSE);*pResult = 0;}8.编写“添加”、“修改”、“删除”和“清空”按钮代码添加按钮void CADODlg::OnButadd(){UpdateData(TRUE);if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Sex.IsEmpty() || m_Culture.IsEmpty())MessageBox("基础信息不能为空!");return;}OnInitADOConn();_bstr_t sql;sql = "select * from employees";m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);try{m_pRecordset->AddNew(); //添加新行m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);m_pRecordset->Update(); //更新数据表ExitConnect();}catch(...){MessageBox("操作失败");return;}MessageBox("添加成功");m_Grid.DeleteAllItems(); //删除列表控件AddToGrid();}修改按钮void CADODlg::OnButmod(){UpdateData(TRUE);if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Sex.IsEmpty() || m_Culture.IsEmpty()) {MessageBox("基础信息不能为空!");return;}OnInitADOConn();_bstr_t sql;sql = "select * from employees";m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);{m_pRecordset->Move((long)pos,vtMissing);m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);m_pRecordset->Update();ExitConnect();}catch(...){MessageBox("操作失败");return;}MessageBox("修改成功");m_Grid.DeleteAllItems();AddToGrid();}删除按钮void CADODlg::OnButdel(){OnInitADOConn();_bstr_t sql;sql = "select * from employees";m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);try{m_pRecordset->Move(pos,vtMissing);m_pRecordset->Delete(adAffectCurrent);m_pRecordset->Update();ExitConnect();}catch(...){MessageBox("操作失败");return;}MessageBox("删除成功");m_Grid.DeleteAllItems();AddToGrid();}void CADODlg::OnButcle() {m_ID = "";m_Name = "";m_Sex = "";m_Culture = "";UpdateData(FALSE); }。