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;Data Source=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 newcolumn1 INTEGER",&;RecordsAffected,adCmdText); } 运行程序, 执行菜单当中的