首页 ADO连接数据库

ADO连接数据库

举报
开通vip

ADO连接数据库ADO连接数据库 三种数据库访问技术: ODBC(Open Database Connectivity,开放式数据库连接),是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的标准应用程序接口(API)。 DAO(Data Access Object )即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。和ODBC一样,他们都是Windows API的一部分,可以独立于(DBMS)进行数据库的访问。 DAO跟ODBC的区别是: 访问机制不同~ODBC工作依赖于数据库制...

ADO连接数据库
ADO连接数据库 三种数据库访问技术: ODBC(Open Database Connectivity,开放式数据库连接),是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的标准应用程序接口(API)。 DAO(Data Access Object )即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。和ODBC一样,他们都是Windows API的一部分,可以独立于(DBMS)进行数据库的访问。 DAO跟ODBC的区别是: 访问机制不同~ODBC工作依赖于数据库制造商提供的驱动程序。使用ODBC API的时候,Windows的ODBC管理程序,把对数据库的访问请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作。DAO则绕开中心环节,直接使用数据库引擎(Microsoft Jet Database Engine)提供的数据库访问对象集进行工作。速度比ODBC快。 ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,提供了简单易用的访问各种数据资源(包括关系型和非关系型)。是相对比较新的数据库访问技术。 ADO连接数据库应用程序需要进行以下步骤: (1) 初始化COM库,利用预编译#import引入ADO库定义文件 #import "D:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile") #include "icrsint.h" 在应用程序的初始化函数中对COM库进行初始化。以下两种方法都可以,但是初始化是必须的,一定要记得加。 BOOL CAdoTestApp::InitInstance() { // 方法1 ::CoInitialize(NULL); /* 方法2 if(!AfxOleInit()) { AfxMessageBox("COM Error!"); return FALSE; }*/ ….. } (2)用Connection对象连接数据库 _ConnectionPtr m_pConnection; m_pConnection.CreateInstance(_uuidof(Connection)); m_ pConnection ->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = D:\\Documents and Settings\\y\\My Documents\\student.mdb;","","",-1); 其中_ConnectionPtr是一个接口,类似于ODBC中的CDatabase类,首先创建一个该接口,接着打开某个指定的数据源。也即是完成数据库的连接。跟_RecordsetPtr,_CommandPtr接 口一起来执行任务。因使用方便,也有人把它跟叫做智能指针。 (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset 对象取得结果记录集进行查询、处理。 (4)使用完毕后关闭连接释放对象。 ADO连接数据库工程代码实例: 首先Access建立如下数据库student.mdb 添加表stu_info: 1 建立一个基于对话框的MFC应用程序,并设计如下对话框界面。 关联变量: 2 引入ADO库定义文件,并初始化COM库。 引入ADO库文件: #import "D:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile") #include "icrsint.h" 对应图例: BOOL CAdoTestApp::InitInstance() { ::CoInitialize(NULL); /*if(!AfxOleInit()) { AfxMessageBox("COM Error!"); return FALSE; }*/ AfxEnableControlContainer(); 对应图例: 3添加数据库连接代码: m_pCon.CreateInstance(_uuidof(Connection)); m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = D:\\Documents and Settings\\y\\My Documents\\student.mdb;","","",-1); m_pRs.CreateInstance(_uuidof(Recordset)); m_pRs->Open("select * from stu_info",m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); m_pRs->MoveFirst(); DisplayFields(); 4 添加对话框成员函数DisplayFields:负责显示对应表中的记录信息。 void CAdoTestDlg::DisplayFields() { vFieldValue= m_pRs->GetCollect("学号"); strFieldValue=(char*)_bstr_t(vFieldValue); m_Sno=strFieldValue; vFieldValue.Clear(); vFieldValue= m_pRs->GetCollect("姓名"); strFieldValue=(char*)_bstr_t(vFieldValue); m_Name=strFieldValue; vFieldValue.Clear(); vFieldValue= m_pRs->GetCollect("出生日期"); strFieldValue=(char*)_bstr_t(vFieldValue); m_birthday=strFieldValue; vFieldValue.Clear(); vFieldValue= m_pRs->GetCollect("四级成绩"); strFieldValue=(char*)_bstr_t(vFieldValue); m_EnglishGrade=strFieldValue; vFieldValue.Clear(); vFieldValue= m_pRs->GetCollect("VC成绩"); strFieldValue=(char*)_bstr_t(vFieldValue); m_ComputerGrade=strFieldValue; vFieldValue.Clear(); UpdateData(FALSE); } 5 按钮响应函数 void CAdoTestDlg::OnButton1() // 向后 { // TODO: Add your control notification handler code here m_pRs->MoveNext(); if(m_pRs->EndOfFile==VARIANT_FALSE) DisplayFields(); else { m_pRs->MovePrevious(); AfxMessageBox("已经到最后一条记录!"); } } void CAdoTestDlg::OnButton2() // 向前 { m_pRs->MovePrevious(); if(m_pRs->FirstOfFile==VARIANT_FALSE) DisplayFields(); else { m_pRs->MoveNext(); AfxMessageBox("已经到第一条记录!"); } } void CAdoTestDlg::OnButton3() //添加 { // TODO: Add your control notification handler code here UpdateData(TRUE); m_pRs->AddNew(); m_pRs->PutCollect("学号",_variant_t(m_Sno)); m_pRs->PutCollect("姓名",_variant_t(m_Name)); m_pRs->PutCollect("出生日期",_variant_t(m_birthday)); m_pRs->PutCollect("四级成绩",_variant_t(m_EnglishGrade)); m_pRs->PutCollect("VC成绩",_variant_t(m_ComputerGrade)); m_pRs->Update(); m_Sno = " "; m_Name= " "; m_birthday = " "; m_EnglishGrade = " "; m_ComputerGrade = " "; UpdateData(FALSE); } void CAdoTestDlg::OnButton4() { // TODO: Add your control notification handler code here.; m_pRs->Delete(adAffectCurrent); m_Sno = " "; m_Name= " "; m_birthday = " "; m_EnglishGrade = " "; m_ComputerGrade = " "; UpdateData(FALSE); } 程序运行结果如下:
本文档为【ADO连接数据库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_562397
暂无简介~
格式:doc
大小:140KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-30
浏览量:9