ado操作数据库

来源:互联网 发布:类似ehviewer的软件 编辑:程序博客网 时间:2024/05/18 02:31

ado操作数据库

前一段时间做的一个小项目,涉及到用ado连接数据,现整理,以备用。
ado(ActiveXdata object)是MS发布的一种数据库访问技术,是基于oledb技术,以odbc等技术一样,通过中间层来访问数据。从性能上讲,它不如oci访问oracle等这样的api方式来得快,但是从易用性来讲,它确实是非常方便的。当然,它只限于window平台的应用。
我们一般使用已封装好的Ado库,因为大部分的应用都是使有现有封装好的库,本文也是结合网站上现有的一个封装好的库来使用。这个类库的详细讨论可以参见codeproject Ado 封装库 e文 。

基本流程
借用网友的总结(VC++ ADO开发实践之一),ado的开发主要有这样的几个流程:
1.初始化COM库,引入Ado定义库文件。
    在VC环境里,初始化COM库通常是在CWinApp::initInstance()函数内完成的。
    BOOL CWinApp::initInstance()
    {
        AfxOleInit();   
    }
    通常我们用的是已经封装好的Ado库,所以“引入Ado库定义”一般都是在封装的时候做好了。查看封装好的类库时,可以看到有一行类似于这样的代码:
    #import "C:/Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "EndOfFile")
    #import "C:/Program Files/Common Files/System/ado/MSJRO.DLL" no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum")
    在有的地方是这样定义的,如果编译时提系统找不到文件,则要改成上面两行,当然路径要写对。
    #import <msado15.dll> rename("EOF", "EndOfFile")
    #import <MSJRO.DLL> no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum")
2.创建数据库连接对象。
    在未封装的类库中,数据库的连接对象是_ConnectionPtr。在本文的封装类里,数据库操作的对象为CADODatabase:
    CADODatabase m_Db = new CADODatabase();
    CString conStr = "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=DAMIS;";
    m_pDb->Open(conStr,"SCOTT","rf0007");
    其中conStr为连接字符串,根据每个数据库的不同配置,示例代码是连接Oracle数据库的字符串。具体的每种数据库的connection String 可以在这里查到codeproject上的ado connection string。
    打开数据库连接的方法为Open(connectionString, user, pwd)。可以根据返回值判断打开是否成功。
3.执行查询并处理返回结果集。
    首先要建立结果集对象,并将其指向操作数据库的连接。这样可以利用已建立的数据库连接来操作结果集。
    CADORecordset m_Rs = new CADORecordset(m_Db);
    CString queryStr = "select * from analog";
    m_Rs.open(queryStr);
    这样执行这条sql语句的结果集就保存在m_Rs对象中,具体的如何访问每条记录,可以参考上文提到的文章codeproject Ado 封装库 e文,作者做了比较详尽的描述。使用这种办法来取得结果集,相对比较简便,但功能性就显得不够强大,还有一种办法是建立CADOCommand类来操作SQL语句,具体的操作办法可以参考该文的示例文件。
4.关闭连接释放对象资源。
    在使用完资源后,要释放数据库的资源。需要释放的资源有两个,分别为:CADORecordset、CADODatabase。释放的方法为:
    m_Rs.delete();
    m_Db.close();

需要注意的
各位数据库的连接都不太一样,在连接之前,需确认这个本地机器跟远程数据库的连接是相通的,比如说,在Oracle数据的连接过程中,本地机器需要安装Oracle数据库的客户端程序,并且配置好连接信息。   

参考资料
codeproject Ado 封装库 e文
codeproject上的ado connection string
VC++ ADO开发实践之一