使用 JDBC 连接至 Derby
此部分将说明如何安装 Derby 以及如何使用 JRuby 和 JDBC 连接至 Derby。
要安装 Derby,请执行以下步骤:
- 从 Derby 主页下载 Derby,然后将其解压缩到目录中。解压缩后,必须创建一个环境变量并更新另一个环境变量。
- 创建环境变量 DERBY_INSTALL,并将其设为解压缩后 Derby 所在的目录(例如,
set DERBY_INSTALL=c:\java\db-derby-10.1.3.1-bin
)。 - 接下来,更新 CLASSPATH 以包含两个 JAR 文件:derby.jar 和 derbytools.jar。这两个文件可在 DERBY_INSTALL 中的 lib 文件夹中找到(例如,
set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;%CLASSPATH%
)。
现在应当通过尝试使用 Derby 附带的 ij 命令行工具连接到 Derby 来检验 Derby 是否已安装并正确配置。
- 回到创建的 JRuby 脚本所在的目录。通过输入以下命令来运行 ij:
java org.apache.derby.tools.ij
。应当会获得一条显示ij version 10.1
的消息。 - 现在将创建数据库供本教程的其余部分使用。将以下命令输入 ij:
ij> connect 'jdbc:derby:JRubyDB;create=true';
。此时,创建了一个名为 JRubyDB 的保存数据库的目录。 - 现在创建了数据库,可以创建一张表并向其中插入一些数据,从而可以在 JRuby 中检索这张表。为此,请执行清单 2 中所示的代码行(仍在 ij 内)。
清单2:创建一张表在 JRuby 内检索
|
由于已创建数据库并用一些数据对其进行了填充,下一个任务是使用 JRuby 连接至该数据库。为此,需要新建一个名为 derby.rb 的文件。在文本编辑器中打开此文件,并输入清单 3 中所示的代码行。
清单3:创建 derby.rb
|
第一行没有新内容,但是其余代码显示了 JRuby 的一些新部分:
module JavaSql
行 —— 模块是可以看作是名称空间的 Ruby 元素。它们允许将方法、类和常量分组到一起。本文中,将创建一个 Ruby 模块,您将向其中放入 java.sql
中的所有类。由于使用的是 java.sql
软件包中的许多类,因此包含整个软件包是有道理的。请记住,包含软件包将降低脚本的运行速度。这样使用模块是访问所有这些类的便利方法。
include_class
代码行 —— 值得注意的下一行是 include_class
。这是一个不同版本的 include_class
方法,因为其中使用了 Ruby 的块语法。include_class
方法将接受一个代码块(有关代码块的更多信息,请参阅 参考资料 部分中列出的一个 Ruby 教程),该代码块将用于把 Java 类 Class
重命名为 JClass
。这样做是因为 Ruby 也有一个名为 Class
的类;如果不将 Java 类重命名,则会产生冲突。本文的代码块将 J 加在 Java 类名的前面。因而,Class
成为 JClass
。
JClass.forName
和 connection
代码行 —— 上两行代码几乎与在纯 Java 代码中编写的完全相同。首先,惟一的差别是使用 JClass
来引用上一行中包含的 Java 版本的类 Class
。最后一行与纯 Java 代码有两个主要差别:
◆首先,无需声明 connection
变量的类型。Ruby 是动态类型的语言;因而在变量声明中无需声明类型。
◆其次,使用上面定义的用于容纳 DriverManager
类的 JavaSql
模块。该类以及 java.sql
软件包中的所有其他内容都被 JavaSql
模块包含了进来。因而,需要在所有对该软件包中的类的引用前面加上 JavaSql::
。这是一种作用域机制,与 C++ 中的一样。
只要一切设置正确,脚本应当能够运行。经过授权后,该脚本还没有任何值得注意的表现。运行它后,应当得不到任何输出。如果发生异常,请返回并查看先前的步骤以确保未遗漏任何操作。