zoukankan      html  css  js  c++  java
  • Oracle免客户端For .Net(只为用NewLife.XCode开发Oracle的同学服务)

        自从发布了一篇博客Oracle免客户端For .Net(增加分析Devart和DataDirect)后,非常非常多的同学前来问各种Oracle客户端运行时安装配置的问题,严重影响了我们团队的正常工作和日常交流。我甚至多次怀疑我是不是不应该发那篇博文,但是又不忍心删除!

        我们写那篇博文的初衷,仅仅是为使用我们的数据映射框架XCode(包含ORM)进行Oracle开发的同学而准备

        只是因为这些技术点对于非XCode用户也有用,所以才发出来。不曾想,给我们自己带来这么多的麻烦。

        这里先为XCode用户做一点补充,非XCode用户请直接跳过,看结尾!

     

    1,新版本XCode内置Oracle客户端运行时的环境检测,自动在这些目录查找OCI:当前目录、上一级的OracleClient目录、各个盘下的OracleClient目录

    2,XCode支持在连接字符串里面通过DllPath=X:\OracleClient来指定OCI目录

    3,如果XCode检测不到任何Oracle客户端运行时,会自动到服务器下载一份,并部署到C:\OracleClient。可以自己拷贝到别的盘去

    4,所以,XCode用户可以用MSSQL或SQLite等数据库开发好应用程序,然后部署的时候修改连接字符串为Oracle的连接字符串即可,XCode会为你准备好环境。

    5,XCode所支持的各大数据库,只要有连接字符串,就可以工作!

    6,除MSSQL外,使用其它数据库全部会自动下载相应的驱动(分x86和x64):Access、SqlCe、SQLite、Oracle、MySql、Firebird、PostgreSQL

    7,如果生产环境机器不能上网,可以自己把驱动等相关文件拷贝带走。只有用Oracle时会有一个目录放在C:\OracleClient,其它数据库下载的驱动文件全部放在当前目录。(主要是因为OCI那个目录太大)

    8,XCode只做下载驱动来使用,不修改系统环境变量和注册表等任何东西,绝对绿色。

    9,如果你只想要一个Oracle客户端运行时,可以用我们代码生成器XCoder上新增的一个功能(“Oracle客户端运行时检查”),它会给你准备好一个可用环境

    image

     

    最新版XCoder下载链接:http://www.kuaipan.cn/file/id_2378544298616942.html

     

    非XCode用户请看:

    1,只要有OCI,可以不用安装Oracle的任何东西,就可以连上数据库,可能需要配置一下环境变量和注册表

    2,该方法无视任何编程语言,非.Net的也可以。比如那个PL Dev,只需要拷贝OCI,然后选项里面指定oci目录即可

    3,如果你怀疑上述两点,你可以不用看本文了

    4,OCI.dll的版本和Oracle.DataAccess.dll要求的版本必须一致,不一致就自己凑,找到一致的

    5,.Net程序调用Oracle.DataAccess.dll,而Oracle.DataAccess.dll会找OCI.dll,顺序是:当前目录、配置文件指定目录、环境变量Path、系统目录

    6,如果上面一点没看懂,只怪你Windows没学好。目录搜索逻辑是Windows开发的基本功。

    7,再次重申,所做的一次,配置环境变量也好,配置注册表也好,只是为了找到OCI.dll!!!

    8,哦,忘了一点,注意OCI所在目录的权限,也许应用程序没有权限执行OCI.dll。另外注意各个目录配置可能导致的DLL版本冲突。

    100,据Oracle官方论坛说,官方即将推出纯托管的驱动,到时候只要一个dll就行,再也没有这么多烦人的事情。如果上面这么多办法都不行,就等等吧。

    10000,如果还不行,那就用XCode算了!

    最后:

        在确定你有仔细阅读、思考这两篇博文的内容之前,请不要打搅我们!仅作技术交流,我们不承担任何后果!

    欢迎各种.Net及逆向工程的交流,QQ群:1600800

    我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
  • 相关阅读:
    [小技巧] micropython 如何执行 *.mpy 文件
    从零开始深入 Linux 底层(软件工程)
    从嵌套结构中取值时如何编写兜底逻辑
    学习JUC源码(2)——自定义同步组件
    学习JUC源码(1)——AQS同步队列(源码分析结合图文理解)
    Java多线程中的wait/notify通信模式
    详解Java锁的升级与对比(1)——锁的分类与细节(结合部分源码)
    认识Redis集群——Redis Cluster
    工作三年多的感慨与总结(二)
    工作三年多的感慨与总结(一)
  • 原文地址:https://www.cnblogs.com/nnhy/p/2520996.html
Copyright © 2011-2022 走看看