zoukankan      html  css  js  c++  java
  • 基于ADO的远程Oracle连接

    最近在一个通过MFC做一个界面,通过这个界面可以对布置在另一台服务器上的数据库MySQL、SQl Server、Oracle进行增删创建表的操作。其中我通过ADO很快就完成了对MySQL和SQL Server的控制。但是Oracle的连接就麻烦很多,我完成这个项目的大部分的时间都在研究怎么与Oracle数据库互通。

    先声明下我的电脑环境,没有装ORACLE客户端,WIN7_64位操作系统,使用的编译器是VC6。服务器用的是WIN10的系统,Oracle的版本为11.2.0.1.0,我客户端安装了

    先交代下,我用OTL最终没能成功连接上数据库,最终是用ADO连接上的,以下是我整个踩坑过程中难点的记录。

    现有的一些工具有很多,最终考虑先用OTL尝试。

    网上很多人说使用OTL只要有一个头文件就够了,而我尝试了只包含OTLV4.H后连编译都通不过,因为还要添加OCI的各种lib库和OCI.dll。

    我是先去别的博客推荐的英文网站上下了一个头文件OTLV4.H,结果发现是个坑,里面的代码是错的,怎么都是编译不过的,后来尝试性的去国内的一个网站下载了一个OTLV4.h没想到竟然编译通过了。

    然后我又下载了OCI的各种lib库和OCI.dll。

    在新建工程中,要把OCI.dll放在编译出来的DEBUG或者RELEASE文件中,

    然后在VC6的左上角菜单中project->project setting->LINK->input中的object/library modules中填入oci.lib,在additional library path中填入...OCIlibMSVC(这个是OCI的lib文件库)。

    在左上角菜单中tool->options->directories中写入include文件目录...OCIinclude。

    然后在工程中包含otlv4.h的头文件,这样工程环境的搭建就完成了。

    OTL的头文件中根据你的宏定义选择相应功能。

    我根据我的环境选择了在StdAfx.h中加入以下宏定义内容:

    #define OTL_ORA11G_R2 // Compile OTL 4.0/OCI11.2
    #define OTL_ORA_UTF8
    #define OTL_ORA_OCI_ENV_CREATE

    宏定义介绍参考http://otl.sourceforge.net/otl3_compile.htm。

    db.rlogon("userid/password@//IP:PORT/SID"); //这是我的链接字符串格式。

    连接前记得先初始化。 

    大部分的环境都好了,可是就死连不上,最后放弃转用ADO。

    MFC调用ADO的环境搭建如下:

    #import "../../out/msado15.dll" no_namespace rename ("EOF","adoEOF")

    在头文件中加入上面这句话

    下载安装Oracle 11.2 client

    有安装包的,安装好后环境变量什么的都会设置好。

    在不清楚自己该用什么字符串格式的情况下,我先新建一个txt文件,将后缀改为udl,右键打开方式中选择OLE DB core service 如下图

    因为我想连接Oracle的数据库所以要在提供程序里选择XXXX OLE DB Provider for Oracle.

    填完连接信息后确认测试连接成功,然后点确定

     再用文本文档打开该文件,得到连接字符串。

    Provider=MSDAORA.1;User ID=system;Data Source=10.10.22.103:1521/iotdb;Persist Security Info=False

    最终我连接Oracle的字符串如下:

      strConnect.Format("Provider=MSDAORA.1;Data Source=%s:%s/%s;Persist Security Info=False",csServer,csPort,csDBName);

    然后再    m_pConnection->Open((_bstr_t)strConnect,(_bstr_t)csUser,(_bstr_t)csDBPass,adModeUnknown);///连接数据库

    连接之前记得先调用初始化函数。

  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/leo-lv/p/11310764.html
Copyright © 2011-2022 走看看