今天正好需要统计三个网站栏目信息更新情况,而这三个网站的后台采用了不同的数据库管理系统。初步想法是通过建立一个小的tomcat webapp,进而通过jdbc访问这三个后台数据库,并根据返回的数据生成报表。 1 开发环境 数据库管理系统:一个是sqlserver 2000,
今天正好需要统计三个网站栏目信息更新情况,而这三个网站的后台采用了不同的数据库管理系统。初步想法是通过建立一个小的tomcat webapp,进而通过jdbc访问这三个后台数据库,并根据返回的数据生成报表。
1 开发环境数据库管理系统:一个是sqlserver 2000,另一个是oracle 9i,再一个是postgresql9.1tomcat执行平台:centosx64 + jdk7.0x64 (全64位环境)2 jdbc驱动的选择2.1 oracle9ioracle官方提供了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