VC++使用ADO开发ACCESS数据库

上传人:pu****.1 文档编号:496306766 上传时间:2022-12-13 格式:DOCX 页数:30 大小:57.21KB
返回 下载 相关 举报
VC++使用ADO开发ACCESS数据库_第1页
第1页 / 共30页
VC++使用ADO开发ACCESS数据库_第2页
第2页 / 共30页
VC++使用ADO开发ACCESS数据库_第3页
第3页 / 共30页
VC++使用ADO开发ACCESS数据库_第4页
第4页 / 共30页
VC++使用ADO开发ACCESS数据库_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《VC++使用ADO开发ACCESS数据库》由会员分享,可在线阅读,更多相关《VC++使用ADO开发ACCESS数据库(30页珍藏版)》请在金锄头文库上搜索。

1、VC+使用ADO开发ACCESS数据库本文通过实例演示如何在VC+中使用ADO进行ACCESS数据库编程,并对涉 及到的几个概念进行详细解释。本文不对ADO和ACCESS的基本概念进行详细解释,主要包括以下内容: 第一部分 ADO 和 ADOX 到底是什么,二者的作用和区别建立数据库 第二部分ADOX创建ACCESS数据库 第三部分 ADO 创建 ACCESS 数据库的表第四部分 使用_ConnectionPtr接口开发ACCESS数据库 第五部分 使用_RecordsetPtr接口开发ACCESS数据库第一部分ADO和ADOX到底是什么,二者的作用和区别ADO 是 Microsoft 最新推

2、出的数据库访问的高层软件接口。它和 Microsoft 以前的数据库访问接口 DAO、RDO 相比具有更大的灵活性,使用也更方便,开发 效率大为提高。ADOX 是核心 ADO 对象的扩展库。它提供的附加对象可用于创建、修改和删 除模式对象,如表和过程。要使用ADOX,则应建立对ADOX类型库的引用。ADOX 库文件名为 Msadox.dll。通俗地讲,ADO是访问数据库的一种接口,可以使用它方便地进行数据库编 程。而 ADOX 是微软对 ADO 功能的扩展,比如:可以 ADOX 创建数据库(而 ADO 没有创建数据库的功能)。第二部分ADOX创建ACCESS数据库用 ADOX 创建 acces

3、s 数据库方法很简单,只需要创建一个 Catalog 对象,然 后调用它的 Create 方法就可以了。例程ADOXCreateDatabase演示如何使用ADOX创建一个ACCESS数据库。打开VC+ 6.0,新建一个基于对话框的工程ADOXCreateDatabase。在对话 框 IDD_ADOXCREATEDATABASE_DIALOG 中添加一个编辑框 IDC_DBNAME 和一个按钮 IDC_BTN_CREATE,编辑框用以输入数据库名称。使用 ClassWizard 给编辑框创建一个 CString 变量 m_dbName。双击IDC_BTN_CREATE按钮,并编辑OnBtnCr

4、eate()函数如下: 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,shlwapi.lib)if(Path

5、FileExists(str)CString strTemp;strTemp.Format(%s 已存在!“, str);AfxMessageBox(strTemp);return ;/定义 ADOX 对象指针并初始化为 NULL/用 ADOX 创建 access 数据库方法很简单,/只需要新建一个Catalog对象,然后调用它的Create方法就可以了。 /Catalog是AD0X的一个对象,它包含描述数据源模式目录的集合。 /在这里,您只需知道创建数据库时使用这个对象就可以了。/注意用 try.catch 组合捕捉错误_CatalogPtr m_pCatalog = NULL;CStrin

6、g DBName=Provider=Microsoft.JET.OLEDB.4.0;Data source=;DBName=DBName+str;trym_pCatalog.CreateInstance(_uuidof(Catalog); m_pCatalog-Create(_bstr_t(LPCTSTR)DBName);catch(_com_error &e)AfxMessageBox(e.ErrorMessage(); return ;使用ADOX,需要引入ADOX的动态链接库msadox.dll,即在stdafx.h中加 入如下语句:#import C:Program FilesComm

7、on Filessystemadomsadox.dll no_namespace rename(EOF,adoEOF)另 外 , ADOX 属 于 COM 对 象 , 所 以 要 在 CADOXCreateDatabaseApp:Initlnstance()函数中加入:if(!AfxOleInit()AfxMessageBox(OLE 初始化出错!);return FALSE;初始化 COM。好了,编译并运行该例程,对于编译过程中弹出的 4146 号警告不要理会。 在编辑框中输入一个数据库名称,点击“创建数据库”按钮,该数据库将在 d 盘根目录下创建,再次输入该数据库名称并点击“创建数据库”按

8、钮,将弹出警 告对话框。在 vc 中使用 ADO 的时候会得到 4146 号警告信息 , 我们可以不去理会,也可以通过#卩说8山8 warning指令解决,方法为:将在 stdafx.h 中加入的语句:#import C:Program FilesCommon Filessystemadomsadox.dll no_namespace rename(EOF,adoEOF)前后再加一条语句,修改后为:#pragma warning (disable:4146)#import C:Program FilesCommon Filessystemadomsadox.dll no_namespace r

9、ename(EOF,adoEOF)#pragma warning (default:4146)指令#pragma warning (disable:4146)暂时屏蔽编译时4146警告信息 指令#pragma warning (default:4146)重置编译器的4146警告到默认状态第三部分ADO创建ACCESS数据库的表我们一般用ADOX创建数据库,然后再用ADO创建数据库的表。例程 CREATE_DB_AND_TABLE 演示如何使用 ADO 创建 ACCESS 数据库的表。打开VC+6.0,新建一个基于对话框的工程CREATE_DB_AND_TABLE。在对话 框 IDD_CREAT

10、E_DB_AND_TABLE_DIALOG 中添加如下控件:控件名称ID用途编辑框IDC DBNAME输入数据库名称按钮IDC BTN CREATE创建数据库编辑框IDC TABLENAME输入表名按钮IDC BTN CREATE TABLE创建表使用ClassWizard给两个编辑框创建CString变量:编辑框CString 变量编辑框 IDC DBNAMEm dbName编辑框 IDC TABLENAMEm tableName双击IDC_BTN_CREATE按钮,并编辑OnBtnCreate()函数如下: void CADOXCreateDatabaseDlg:OnBtnCreate()

11、UpdateData(TRUE);CString str;str=d:+m_dbName+.mdb;if(PathFileExists(str)CString strTemp;strTemp.Format(%s 已存在!“, str);AfxMessageBox(strTemp); return ;_CatalogPtr m_pCatalog = NULL;CString DBName=Provider=Microsoft.JET.OLEDB.4.0;Data source=;DBName=DBName+str;trym_pCatalog.CreateInstance(_uuidof(Cata

12、log); m_pCatalog-Create(_bstr_t(LPCTSTR)DBName);catch(_com_error &e)AfxMessageBox(e.ErrorMessage(); return ; 以上代码例程 ADOXCreateDatabase 中已经详细叙述。双击 IDC_BTN_CREATE_TABLE 按钮,并编辑 OnBtnCreateTableO 函数如下:void CCREATE_DB_AND_TABLEDlg:OnBtnCreateTable()/先判断表名编辑框是否为空UpdateData(TRUE);if(!m_tableName.IsEmpty()A

13、DOX:_CatalogPtr m_pCatalog=NULL;ADOX:_TablePtr m_pTable=NULL;CString str;str=d:+m_dbName+.mdb;CString DBName=Provider=Microsoft. JET. OLEDB. 4. 0; Data source= DBName=DBName+str;/这段代码先检查表是否已经存在,如果表已经存在,不再创建,直接返回。/ 其实这段代码不必深入研究,只需知道它的功能,直接拿来使用即可 trym_pCatalog.CreateInstance(_uuidof(ADOX:Catalog); m_p

14、Catalog-PutActiveConnection(_bstr_t(DBName); int tableCount=m_pCatalog-Tables-Count;int i=0;while(iTables-GetItem(long)i);CString tableName=(BSTR)m_pTable-Name; if(tableName=m_tableName)AfxMessageBox(该表已经存在!);return;i+;catch(_com_error &e)AfxMessageBox(e.Description();return;ADODB:_ConnectionPtr m_pConnection;/创建表_variant_t RecordsAffected;trym_pConnection.CreateInstance(_uuidof(ADODB:Connection);/Open 方法的原型:/Open(_bstr_t ConnectionString,_bstr_t UserID,_bstr_t Password,long Options)/ConnectionString 为连接字串,UserID 是用户名,Password 是登陆密码/Options 是连接选项,可以是如下几个常量/adMo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号