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

Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL,布布扣,bubuko.com

时间: 2024-10-15 06:34:25

Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL的相关文章

linux下程序JDBC连接不到mysql数据库

今天在linux下部署一个 JavaEE项目的时候总是连接不到Mysql数据库,检查之后发现连接池的配置确定是对的,进入linux服务器之后以mysql -uname -ppassword连接总是报Access denied for user 'root'@'localhost' (using password: YES”),最终解决掉这个问题之后还是连接不上(参考:http://www.cnblogs.com/qlqwjy/p/8315802.html). 解决掉之后通过在本地的sqlyog连

Linux下使用Python连接Oracle 报cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded解决方法

在Linux上使用python运行数据库脚本的时候报:cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded解决方法 这个导致这个问题的原因是本机的Python2.7是64位的,而数据库用了32位的instantclient-basic,所以要把instantclient-basic的版本更新为64位的 以下是按照官网文档操作的,自测没有问题. 下载instantclient-basic的R

在linux上通过JDBC连接ORACLE 时总是出现 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题

如标题所述,经过和度娘沟通了不知道多少遍最后看一篇文章解决, 我是通过执行jar来操作DB的.所以在命令中加了一个参数( 加粗,红色) eg: $JAVA_EXE -Djava.security.egd=file:///dev/urandom  -jar  xxxxxxx.jar 最终测试OK 参考的文章出处是:http://www.feexion.com/?p=247

Linux(Centos)下jdbc连接oracle速度超慢的问题

最近在centos下写个java swing程序,发现在linux用jdbc连接oracle及其缓慢,还经常失败.但是同样的程序在windows下运行就连接的非常快.网上搜索了很长时间都和我这情况没关系,偶然看到了下面的文章: 原文地址http://www.xuebuyuan.com/200181.html 解决使用JDBC连接orcale速度慢的问题 2012年04月01日 ⁄ 综合 ⁄ 共 341字 ⁄ 字号 小 中 大 ⁄ 评论关闭 使用java 开发程序,选用ojdbc14.jar的驱动

JAVA通过JDBC连接Oracle数据库详解【转载】

JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.html Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver"; Class.forName("驱动类名"); 2.获得连接 数据库地址: URL="jdbc:oracle:thi

在Eclipse中通过JDBC连接Oracle数据库并操作

一.JDBC释义 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制. 二.JDBC连接Oracle数据库的流程及原理 1)在开发环境中加载指定数据库的驱动

JDBC连接Oracle数据库

我记得大二的时候,我们上java课程,当时老师就说了JDBC这个东西,也没怎么好好学,直到现在,我也不直到JDBC是什么玩意,就知道这玩意可以从数据库提取数据,那么JDBC到底是什么呢? JDBC是Java DataBase Connectivity的缩写,含义意思是java数据库连接,不需要多解释了,我感觉! 那么我们如何去做这样子的一个连接呢?用过一次之后就会发现,其实很简单,记住几个步骤,还有就是导入必要的驱动包就可以了,下面是几个重要的步骤: 第一步,你的项目环境中必须要导入必要的数据库

linux下的静态连接库和动态链接库

对linux的静态连接库和动态链接库分不清楚,在看了一篇博文后,现在想做个自己的总结,以加深印象: 1.库的基本概念: 库是可执行代码的二进制形式,其可以被调入操作系统调入内存进行执行. 在window和linux系统,都存在各自的库,但是两种系统的库并不能兼容,因为它们的编译器,连接器,汇编器都是不相同的. 在windows下,静态连接库的后缀是.lib;动态链接库的后缀是.dll 在linux系统下,静态链接库的后缀是.a;动态链接库的后缀是.so 2.静态连接库和动态链接库的命名: 静态连

Linux下的动态连接库及其实现机制

Linux与Windows的动态连接库概念相似,但是实现机制不同.它引入了GOT表和PLT表的概念,综合使用了多种重定位项,实现了"浮动代码",达到了更好的共享性能.本文对这些技术逐一进行了详细讨论. 本文着重讨论x86体系结构,这是因为 (1)运行Linux的各种体系结构中,以x86最为普及: (2)该体系结构上的Windows操作系统广为人知,由此可以较容易的理解Linux的类似概念: 下表列出了Windows与Linux的近义词,文中将不加以区分: Windows Linux 动