最近一直在学习研究用vc++访问数据库的问题,使用过ADO,也使用过ODBC。就这两种连接数据源的接口都有好几种方式,可以利用database,也可以利用dataset。利用这个word把我学习的思路整理一下。 一、 使用ADO连接数据源 一般来说当建立基于对话框的应用程序时,都选择使用ADO比较方便(这纯属个人习惯问题)。 1. 直接在应用程序中建立与数据库的connection 2. 自己写一个ADOConnection类作为应用程序操作数据库的接口,这样操作的层次更明显,程序的分层思想也体现较好。 下面分别就这两种方法做个总结。 1. 直接在应用程序中建立与数据库的connection 在应用程序中要使用ADO,则需要引入ADO的动态连接库。其方法为: 在StdAfx.h中:#import "c:\program files\common files\system\ado\msado15.dll"\ no_namespace\ rename("EOF","adoEOF") 目的:产生msado15.tlh和msado15.tli两个头文件来定义ADO库。 定义好ADO库后,应初始化COM库环境。其方法为: 在C***APP::InitInstance中定义_ConnectionPtr m_pConnection; AfxOleInit();//使用AfxOleInit初始化OLE/COM库环境 //创建ADO连接 m_pConnection.CreateInstance(_uuidof(Connection)); //在ADO操作中使用try...catch捕获错误 try { m_pConnection->Open("provider=SQLOLEDB;server=ZENGYH;database=postms;uid=sa;pwd=hongyi","","",adModeUnknown); } catch (_com_error e) { AfxMessageBox("连接数据库失败!"); return FALSE; } 而相应的释放数据库的连接: 在C***APP:: ExitInstance中: m_pConnection->Close(); ::OleUninitialize(); 至此,关于数据库的连接与断开就能顺利实现,接下来将是对数据库中表的操作,即对记录集操作。 当操作数据库的表时,需先声明数据集指针:_RecordsetPtr m_pRecordset; 与创建ADO连接类似,需要在所操作的对话框类的OnInitDialog()中创建记录集对象: m_pRecordset.CreateInstance(_uuidof(Recordset)); 如此之后将可以使用m_pRecordset来查询,修改,删除数据库等。 打开要操作的表可使用m_pRecordset的open函数m_pRecordset->Open("select * from STUDENTS",theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); 记录集的查询操作: 使用可以使用如下的函数来实现记录集的移动Movefirst, movenext , moveprev,movelast。 提取列属性:getcollect(“列名 [1] [2] [3] [4] 下一页 [Delphi程序]在Delphi里调用API函数动态建立ODBC数据源。 [网页制作]Ultradev实例教程:2.2 用ODBC连接数据库 [Web开发]在DELPHI程序中使用ADO对象存取ODBC数据库 [Web开发]在DELPHI程序中使用ADO对象存取ODBC [MySql]php操纵mysql的类(与odbc相对应) [MySql]使用MySql ODBC进行MYsql和MS sql7的数据转换
|