VC++使用ADO开发ACCESS数据库.docx
- 文档编号:1344276
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:36
- 大小:36.92KB
VC++使用ADO开发ACCESS数据库.docx
《VC++使用ADO开发ACCESS数据库.docx》由会员分享,可在线阅读,更多相关《VC++使用ADO开发ACCESS数据库.docx(36页珍藏版)》请在冰豆网上搜索。
VC++使用ADO开发ACCESS数据库
VC+使用ADC开发ACCESS^据库
本文通过实例演示如何在VC+中使用ADC进行ACCESS^据库编程,并对涉及到的几个概念进行详细解释。
本文不对ADO和ACCESS勺基本概念进行详细解释,主要包括以下内容:
第一部分ADO和ADO)到底是什么,二者的作用和区别建立数据库
第二部分ADOX创建ACCES数据库
第三部分ADO创建ACCESS^据库的表
第四部分使用_ConnectionPtr接口开发ACCES数据库
第五部分使用_RecordsetPtr接口开发ACCES数据库
第一部分ADO和ADOX到底是什么,二者的作用和区别
ADO是Microsoft最新推出的数据库访问的高层软件接口。
它和Microsoft以前的数据库访问接口DAORDO!
比具有更大的灵活性,使用也更方便,开发效率大为提高。
ADOX是核心ADO对象的扩展库。
它提供的附加对象可用于创建、修改和删除模式对象,如表和过程。
要使用ADOX则应建立对ADOXfe型库的引用。
ADOX库文件名为Msadox.dll。
通俗地讲,ADO是访问数据库的一种接口,可以使用它方便地进行数据库编程。
而ADOX1微软对ADO功能的扩展,比如:
可以ADOX创建数据库(而ADO没有创建数据库的功能)。
第二部分ADOX创建ACCESS数据库
用ADOXJ建access数据库方法很简单,只需要创建一个Catalog对象,然后调用它的Create方法就可以了。
例程ADOXCreateDatabase演示如何使用ADOXJ建一个ACCES数据库。
打开VC++6.0,新建一个基于对话框的工程ADOXCreateDatabase在对话框IDD_ADOXCREATEDATABASE_D中添加一个编辑框IDC_DBNAM和一个按钮IDC_BTN_CREATES辑框用以输入数据库名称。
使用ClassWizard给编辑框创建一个CString变量m_dbName双击IDC_BTN_CREA按钮,并编辑OnBtnCreate()函数如下:
voidCADOXCreateDatabaseDlg:
:
OnBtnCreate()
{
//使输入到编辑框IDC_DBNAM的内容更新到m_dbNam变量中UpdateData(TRUE);
CStringstr;
str="d:
\\"+m_dbName+".mdb";
//检查该数据库是否已经存在,如果该数据库已经存在,弹出消息框,返回
//使用API函数PathFileExists()检查路径文件是否存在
//请注意:
为了使用API函数PathFileExists(),需要加入
//#include"Shlwapi.h"
//#pragmacomment(lib,"shlwapi.lib")if(PathFileExists(str))
{
CStringstrTemp;strTemp.Format("%s已存在!
",str);AfxMessageBox(strTemp);return;
}
//定义ADOX寸象指针并初始化为NULL
//用ADOX建access数据库方法很简单,
//只需要新建一个Catalog寸象,然后调用它的Create方法就可以了。
//Catalog是ADOX的一个寸象,它包含描述数据源模式目录的集合。
//在这里,您只需知道创建数据库时使用这个寸象就可以了。
//注意用try...catch组合捕捉错误
_CatalogPtrm_pCatalog=NULL;
CStringDBName="Provider=Microsoft.JET.OLEDB.4.0;Datasource=";
DBName=DBName+str;
try
{m_pCatalog.CreateInstance(__uuidof(Catalog));m_pCatalog->Create(_bstr_t((LPCTSTR)DBName));
}
catch(_com_error&e)
{AfxMessageBox(e.ErrorMessage());return;
}
}
使用ADO,需要引入ADOX勺动态链接库msadox.dll,即在stdafx.h中加入如下语句:
#import"C:
\ProgramFiles\CommonFiles\system\ado\msadox.dll"no_namespacerename("EOF","adoEOF")
另外,ADOX属于COM寸象,所以要在
CADOXCreateDatabaseApp:
:
InitInstance()函数中加入:
if(!
AfxOleInit())
{
AfxMessageBox("OLE初始化出错!
");
returnFALSE;
}
初始化COM。
好了,编译并运行该例程,寸于编译过程中弹出勺4146号警告不要理会。
在编辑框中输入一个数据库名称,点击“创建数据库”按钮,该数据库将在d
盘根目录下创建,再次输入该数据库名称并点击“创建数据库”按钮,将弹出警告对话框。
在vc中使用ADO勺时候会得到4146号警告信息,我们可以不去理会,也可以通过#pragmawarning指令解决,方法为:
将在stdafx.h中加入的语句:
#import"C:
\ProgramFiles'CommonFiles\system\ado\msadox.dll"no_namespacerename("EOF","adoEOF")
前后再加一条语句,修改后为:
#pragmawarning(disable:
4146)
#import"C:
\ProgramFiles\CommonFiles\system\ado\msadox.dll"no_namespacerename("EOF","adoEOF")
#pragmawarning(default:
4146)
指令#pragmawarning(disable:
4146)暂时屏蔽编译时4146警告信息指令#pragmawarning(default:
4146)重置编译器的4146警告到默认状态
第三部分ADO创建ACCESS^据库的表
我们一般用ADO)创建数据库,然后再用ADO创建数据库的表。
例程CREATE_DB_AND_TA演示如何使用ADO创建ACCES数据库的表。
打开VC++6.0,新建一个基于对话框的工程CREATE_DB_AND_TAB在对话框IDD_CREATE_DB_AND_TABLE_DIAL添加如下控件:
控件名称
ID
用途
编辑框
IDCDBNAME
输入数据库名称
按钮
IDCBTNCREATE
创建数据库
编辑框
IDCTABLENAME1
输入表名
按钮
IDCBTNCREATETABLE
三创建表
使用ClassWizard给两个编辑框创建CString变量:
编辑框
CString变量
编辑框IDCDBNAME
mdbName
编辑框IDCTABLENAME
mtableName
双击IDC_BTN_CREA按钮,并编辑OnBtnCreate()函数如下:
voidCADOXCreateDatabaseDlg:
:
OnBtnCreate()
{
UpdateData(TRUE);
CStringstr;
str="d:
\\"+m_dbName+".mdb";
if(PathFileExists(str))
{
CStringstrTemp;strTemp.Format("%s已存在!
",str);AfxMessageBox(strTemp);return;
}
_CatalogPtrm_pCatalog=NULL;
CStringDBName="Provider=Microsoft.JET.OLEDB.4.0;Datasource=";DBName=DBName+str;
try
{m_pCatalog.CreateInstance(__uuidof(Catalog));m_pCatalog->Create(_bstr_t((LPCTSTR)DBName));
}catch(_com_error&e)
{AfxMessageBox(e.ErrorMessage());return;
}
}
以上代码例程ADOXCreateDatabase中已经详细叙述。
双击IDC_BTN_CREATE_TAB按钮,并编辑OnBtnCreateTable()函数如下:
voidCCREATE_DB_AND_TABLEDlg:
:
OnBtnCreateTable()
{
//先判断表名编辑框是否为空
UpdateData(TRUE);
if(!
m_tableName.IsEmpty())
{
ADOX:
:
_CatalogPtrm_pCatalog=NULL;
ADOX:
:
_TablePtrm_pTable=NULL;
CStringstr;
str="d:
\\"+m_dbName+".mdb";
CStringDBName="Provider=Microsoft.JET.OLEDB.4.0;Datasource=";
DBName=DBName+str;
返回。
//其实这段代码不必深入研究,只需知道它的功能,直接拿来使用即可try
{m_pCatalog.CreateInstance(__uuidof(ADOX:
:
Catalog));m_pCatalog->PutActiveConnection(_bstr_t(DBName));inttableCount=m_pCatalog->Tables->Count;
inti=0;
while(i { m_pTable=(ADOX: : _TablePtr)m_pCatalog->Tables->GetItem((long)i);CStringtableName=(BSTR)m_pTable->Name;if(tableName==m_tableName) { AfxMessageBox("该表已经存在! "); return; } i++; } } catch(_com_error&e) { AfxMessageBox(e.Description()); return; } ADODB: : _ConnectionPtrm_pConnection; //创建表 _variant_tRecordsAffected; try { m_pConnection.CreateInstance(__uuidof(ADODB: : Connection)); //Open方法的原型: //Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,longOptions) //ConnectionString为连接字串,UserID是用户名,Password是登陆密码 //Options是连接选项,可以是如下几个常量: //adModeUnknown缺省,当前的许可权未设置 //adModeRead
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 使用 ADO 开发 ACCESS 数据库