• Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL


    今天正好需要统计三个网站栏目信息更新情况,而这三个网站的后台采用了不同的数据库管理系统。初步想法是通过建立一个小的Tomcat webapp,进而通过JDBC访问这三个后台数据库,并根据返回的数据生成报表。

    1 开发环境

    • 数据库管理系统:一个是SqlServer 2000,另一个是Oracle 9i,再一个是PostgreSQL9.1
    • Tomcat执行平台:CentOSx64 + JDK7.0x64 (全64位环境)

    2 JDBC驱动的选择

    2.1 Oracle9i

    Oracle官方提供了ojdbc6.jar这个type 4 JDBC驱动,仅此一个文件就能完成对JDBC的支持,将其拷贝到WEB-INF/lib下。关键代码如下:
     
             Class.forName("oracle.jdbc.driver.OracleDriver");
             DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
             String dbUrl = "jdbc:oracle:thin:@IP地址:1521:实例名";

     
    oracle对于兼容性做的非常好,这个版本的JDBC驱动对oracle9i依然支持良好。
     

    2.2 SqlServer2000

    微软官方也提供了SqlServer的type 4 JDBC驱动,具体说来有两个文件:sqljdbc4.jar, sqljdbc.jar,其中带4的是最新的版本可以运行于JDK7.0下,而不带4的版本不能运行于
    JDK7下,问题是sqljdbc4.jar只支持SqlServer 2005以上的版本,不支持SqlServer 2000。也就是说要想通过微软提供的JDBC驱动操作SqlServer 2000,你的JDK版本一定要比JDK7低才行,可是我们的开发环境已经确定了是JDK7。
    有此想到了两个解决思路:
     
    一是使用JDBC-ODBC桥接,unixODBC是Linux平台上的ODBC实现,进而还需要安装SqlServer 2000的ODBC驱动,www.unixODBC.org给出了两个链接,一个不是免费开源的;另一个是基于freetds的ODBC驱动,不知为什么www.freetds.org网站打不开了。我以前用过freetds的命令行连接SqlServer还是不错的。ODBC的配置非常复杂,尤其是在Linux 环境下,特别不友好。懒惰的心理下,放弃了这种思路。
     
    二是既然freetds可以操作SqlServer,为什么不越过ODBC,让JDBC直接基于tds呢,很幸运在网上找到了一个好的解决方案:jTDS,详见http://jtds.sourceforge.net。这个项目提供了基于TDS协议的JDBC实现,是一个纯的type 4 JDBC驱动,通过一个jtds-1.3.0.jar即可满足通过JDBC访问SqlServer2000的需要。而且可以运行于JDK7.0下,正好满足我的要求。
     
    最终采取了第二种思路,关键代码如下:
     
                  Class.forName("net.sourceforge.jtds.jdbc.Driver");
                  DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver());
                  String dbUrl = "jdbc:jtds:sqlserver://IP地址:1433/数据库名";

    2.3 PostgreSQL9.1

    官网jdbc.potgresql.org提供postgresql-9.2-1000.jdbc4.jar,这也是一个type 4 JDBC驱动,下载即可使用。关键代码如下:

               Class.forName("org.postgresql.Driver");
               dbUrl = "jdbc:postgresql://IP地址:5432/数据库名";

    这个驱动加载的时候自动注册,所以不需要再单独进行registerDriver了。

    3 总结

    通过这个小小的项目,总结一下目前常用的数据库的JDBC驱动选择:
    (1)SQL Server 对于2005及以上版本,建议使用微软官方的type 4JDBC驱动;对于2000版本,如果JDK环境较老,可以使用微软官方版本,如果JDK7.0则使用jTDS这个type 4JDBC驱动;
    (2)Oracle,对于所有版本推荐使用官方的thin驱动,也就是type4的JDBC驱动;
    (3)PostgreSQL, MySql,官方提供了type 4的JDBC驱动,使用即可。
    网络是个宝藏,但是要找到你真正需要的东西,就必须有完整的知识体系结构,必须有清晰的分析思路。
     
    如果需要在.net框架下访问Sqlserver和Oracle,可以参考我的另一篇博客:http://blog.csdn.net/smstong/article/details/5874451
  • 相关阅读:
    mac安装mysql 8.0.20
    leetcode之两数之和
    家人闲坐,灯火可亲汪曾祺散文集读书笔记
    java入门知识代码练习
    苏世民:我的经验与教训读后感
    java入门知识
    创业者日志——易居cms产品有什么不同的地方?
    易优CMS:channelartlist 获取当前频道的下级栏目的内容列表
    房产小程序可以实现什么功能?有什么优势?怎么推广小程序?
    房产中介是否需要用管理系统?哪个房产中介管理软件好?
  • 原文地址:https://www.cnblogs.com/zhwl/p/3736145.html
Copyright © 2020-2023  润新知