Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1160084
  • 博文数量: 253
  • 博客积分: 5892
  • 博客等级: 大校
  • 技术积分: 1942
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 14:20
文章分类

全部博文(253)

文章存档

2012年(98)

2011年(155)

分类: LINUX

2011-11-01 11:38:13

最新发布的Oracle Berkeley DB 11g Release 2(以下简称BDB 11gR2)提供了对SQL的支持。同时,BDB11gR2还支持通过JDBC驱动来访问BDB 11gR2数据库。在当前版本的BDB 11gR2,我们推荐用户使用Werner版的JDBC驱动程序:。下文如未明确指明,则JDBC缺省指的是Werner版的JDBC驱动程序,且本次发布是基于版本javasqlite-20090430。

本文演示了如何在Linux和Windows平台上,编译和配置BDB 11gR2 的JDBC访问。更多关于BDB 11gR2的信息,请参考BDB的官方文档。

什么是JDBC

根据维基百科的定义:Java数据库连接(Java Database Connectivity,简称JDBC),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是面向关系型数据库的。

前提条件

1. 请到Oracle官方网站: 下载最新版本的Berkeley DB 11g Release 2源代码包。选择一个目录,解压缩源代码包,释放后的目录为,其中x是具体的小版本号。

  • 备注:
    • 解压完后在/sql/jdbc目录下会带有一份JDBC驱 动程序的源代码;
    • 注意本次附在Oracle Berkeley DB 11g Release 2发布包中的JDBC驱动程序以开源形式提供。上述JDBC驱动程序的代码不属于Oracle Berkeley DB的知识产权,Oracle Berkeley DB组暂时不提供相关的支持和维护。

2. 请确认你的Windows/Linux机器安装了JDK(1.4及以上版本);

3. 请确认你的Windows机器安装了Visual Studio(2005及以上版本);

在Linux平台配置JDBC

1. 进入目录/build_unix(注意:该目录是所有Unix/POSIX平台上编译生成BDB 11gR2的入口),运行如下命令来编译得到BDB 11gR2的库文件:

$ cd build_unix $ CFLAGS="-fPIC" ../dist/configure --enable-sql_compat --disable-shared $ make
  • 备注:
    • 选项“–disable-shared”指定目标文件为静态库,否则用户的应用程序最终需要链接两个动态库文件(一个是DB库,另一个是JDBC的JNI库);
    • 这一步骤会在/build_unix目录下生成libdb-5.0.a。

2. 进入目录/sql/jdbc,运行如下命令来编译得到JDBC驱动器所需要的Java类包以及JNI库文件:

$ cd ../sql/jdbc $ CFLAGS="-DHAVE_SQLITE3_MALLOC -DHAVE_ERRNO_H \ -I../../build_unix -I../../dbinc" \ LDFLAGS="../../build_unix/libdb-5.0.a" \ ./configure -with-sqlite3=../generated $ make
  • 备注:
    • 在make步骤中,你会遇到类似于如下的Warning:
    • *** Warning: Linking the shared library libsqlite_jni.la against the
      *** static library ../../build_unix/libdb-5.0.a is not portable!

      这个Warning是由libtool产生的 ,原因是所链接的libdb-5.0.a库文件没有提供相应的libdb-5.0.la文件。此Warning可以忽略,丝毫不影响使用JDBC;

    • 这一步骤会生成两个 目标文件:一个是Java类包:/sql/jdbc/sqlite.jar,另一个是JNI库文件:/sql/jdbc/.libs/libsqlite_jni.so。

3. 进入目录/sql/jdbc,运行如下命令验证得到的目标文件是否正确:

$ javac -classpath ./sqlite.jar test3.java $ java -Djava.library.path=./.libs -classpath ./sqlite.jar:. test3
  • 备注:
    • test3.java是JDBC驱动器自带的一个测试程序,请阅读此文件,了解大致此测试程序做了那些操作。

如果屏幕显示出如下结果,则表明JDBC已经配置成功了。

INFO: expecting {96,97,98,99} got {96,97,98,99} TRACE: drop table TEST3 TRACE: drop table B TRACE: select * from sqlite_master cleaning up ... done.
  • 备注:
    • 运行完上述示例后,你将在当前目录下能够看到一个名为db3的文件以及一个名为db3-journal的目录文件,其中db3是数据库文件,db3-journal是数据库环境的根目录;
    • 使用file命令查看db3数据库文件属性,显示如下:
      $ file db3
      db3: Berkeley DB (Btree, version 9, native byte-order)。

在Windows平台配置JDBC

1. 用Visula Studio打开/build_windows/目录下的Berkeley_DB.sln文件;

2. 在Visula Studio中,选择File->Add->Existing Project,选中build_windows/db_sql_jdbc.vcproj工程文件并添加到Berkeley_DB.sln中,同时设置 db_sql_jdbc工程依赖于db_sql工程;

3. 编译db_sql_jdbc工程,这一步骤将在目录\build_windows \\\下产生如下目标文 件:jdbc.jar,libdb50d.dll,libdb_sql50d.dll,sqlite_jni.dll;

4. 进入目录\build_windows\Win32\Debug(我的测试平台是Win32,编译模式是Debug),运行如下命令来 验证你编译得到的目标文件是否正确:

javac -cp ".;jdbc.jar" -d . ..\..\..\sql\jdbc\test3.java java -cp ".;jdbc.jar" test3
  • 备注:
    • test3.java是JDBC驱动器自带的一个测试程序,请阅读此文件,了解大致此测试程序做了那些操作。

如果屏幕显示出如下结果,则表明JDBC已经配置成功了。

INFO: expecting {96,97,98,99} got {96,97,98,99} TRACE: drop table TEST3 TRACE: drop table B TRACE: select * from sqlite_master cleaning up ... done.
  • 备注:
    • 运行完上述示例后,你将在当前目录下能够看到一个名为db3的文件以及一个名为db3-journal的目录文件,其中db3是数据库文件,db3-journal是数据库环境的根目录。
阅读(1361) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~