最新发布的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是数据库环境的根目录。
阅读(1407) | 评论(0) | 转发(0) |