预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VC与ADO数据库操作 学研部的同志们,大家好!想开一次学习会,实习时间冲突了,只好把文档发给大家看了。重点推荐李振龙的BMP读图教程!尤其是大三GIS班的同志,注意了,可能实习用得上的! ADO简介ADO(ActiveXDataObject)是Microsoft数据库应用程序开发的新接口,是建立在OLEDB之上的高层数据库访问技术,请不必为此担心,即使你对OLEDB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBCAPI、DAO都要容易使用, 【1】为工程做准备 建一个基于对话框的工程,名字叫PlaceName。 加入一个ListControl控件,ID改成IDC_RESULT,顺便点一下Styles选项卡,把View改成Report,你可以看到对话框里的ListControl控件的样子已经变成带字段名的报表格式了。右击它,用ClassWizard添加成员变量,名字为m_LisCtrlResult。 按照上面的程序界面,加入一个编辑框(输入SQL语句用的),同上面添加m_LisCtrlResult成员变量一样,加入一个CString变量,名字为m_SqlText,还有一个“查询”按钮,把它叫为Query,双击它一下,VC会自动为它加入消息和函数的,名字也叫OnQuery(),等一下我们就用着那个函数的。 看到我们SpaceSoft的标志不?把你的照片换成BMP格式的,放上去吧! 定义一下要用着的变量: classCPlaceNameDlg:publicCDialog { //Construction public: _RecordsetPtrm_pRecordset; //定义一个RecordsetPtr对象,用来储存读出来的表 HRESULThr; //查出后的表 Fields* fields; //储存查出后的字段 BSTR bstrColName;//储存一下字段名 longnRstCol;//SQL语句一共查出了几个字段?nRstCol个! CString strColName[100];//把查出的字段名转换成常见常用的CString类型,放在这个数组里边 …… } //储存从数据库读出的数据,variant变量能够存储所有系统定义类型的数据。 【2】COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码: BOOLCPlaceNameApp::InitInstance() { AfxOleInit(); ...... } 【3】用#import指令引入ADO类型库我们在stdafx.h中加入如下语句:(stdafx.h这个文件哪里可以找到?你可以在FileView中的HeaderFiles里找到) #import"c:\programfiles\commonfiles\system\ado\msado15.dll"no_namespacerename("EOF","adoEOF") 这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。几点说明:(1)您的环境中msado15.dll不一定在这个目录下,请按实际情况修改(2)在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。msado15.tlh(405):warningC4146:unaryminusoperatorappliedtounsignedtype,resultstillunsigned 【4】创建Connection对象并连接数据库首先我们需要添加一个指向Connection对象的指针,就是在PlaceName.h里加入下面一句,定义它:_ConnectionPtrm_pConnection;//前面带“_”的语句一般是VC本来没有的东西,是外来的 下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉。 BOOLCPlaceNameApp::InitInstance() { AfxEnableControlContainer(); AfxOleInit();//使用OLE对象时,须加这一句 HRESULThr; try { hr=m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象 if(SUCCEEDED(hr)) { hr=m_pConnection->Open("Provider=Microsoft