2024年5月1日发(作者:)

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

库文件名为 。

通俗地讲,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。

双击IDC_BTN_CREATE按钮,并编辑OnBtnCreate()函数如下:

void CADOXCreateDatabaseDlg::OnBtnCreate()

{

//使输入到编辑框IDC_DBNAME的内容更新到m_dbName变量中

UpdateData(TRUE);

CString str;

str="d:"+m_dbName+".mdb";

//检查该数据库是否已经存在,如果该数据库已经存在,弹出消息框,返回

//使用API函数PathFileExists()检查路径文件是否存在

//请注意:为了使用API函数PathFileExists(),需要加入

//#include "Shlwapi.h"

//#pragma comment(lib,"")

if(PathFileExists(str))

{

CString strTemp;

("%s已存在!",str);

AfxMessageBox(strTemp);

return ;

}

//定义ADOX对象指针并初始化为NULL

//用ADOX创建access数据库方法很简单,

//只需要新建一个Catalog对象,然后调用它的Create方法就可以了。

//Catalog是 ADOX 的一个对象,它包含描述数据源模式目录的集合。

//在这里,您只需知道创建数据库时使用这个对象就可以了。

//注意用atch组合捕捉错误

_CatalogPtr m_pCatalog = NULL;

CString DBName="Provider=.4.0;Data source=";

DBName=DBName+str;

try

{

m_Instance(__uuidof(Catalog));

m_pCatalog->Create(_bstr_t((LPCTSTR)DBName));

}

catch(_com_error &e)

{

AfxMessageBox(essage());

return ;

}

}

使用ADOX,需要引入ADOX的动态链接库,即在stdafx.h中加

入如下语句:

#import "C:Program FilesCommon "

no_namespace rename("EOF","adoEOF")

另外,ADOX属于COM对象,所以要在

CADOXCreateDatabaseApp::InitInstance()函数中加入:

if(!AfxOleInit())

{

AfxMessageBox("OLE初始化出错!");

return FALSE;

}

初始化COM。

好了,编译并运行该例程,对于编译过程中弹出的4146号警告不要理会。