保存一个新的Address数据库记录,该记录有一个新的关键值或记录标识。当我们创建PreparedStatement时,我们可以告诉数据库我们想要知道产生的值。在插入数据后,我们可以通过该值返回一个ResultSet。saveRecord方法返回新创建记录的关键值。
stmtSaveNewRecord = dbConnection.prepareStatement(
"INSERT INTO APP.ADDRESS " +
" (LASTNAME, FIRSTNAME, MIDDLENAME, " +
" PHONE, EMAIL, ADDRESS1, ADDRESS2, " +
" CITY, STATE, POSTALCODE, COUNTRY) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
Statement.RETURN_GENERATED_KEYS);
...
public int saveRecord(Address record) {
int id = -1;
try {
stmtSaveNewRecord.clearParameters();
stmtSaveNewRecord.setString(1, record.getLastName());
stmtSaveNewRecord.setString(2, record.getFirstName());
stmtSaveNewRecord.setString(3, record.getMiddleName());
stmtSaveNewRecord.setString(4, record.getPhone());
stmtSaveNewRecord.setString(5, record.getEmail());
stmtSaveNewRecord.setString(6, record.getAddress1());
stmtSaveNewRecord.setString(7, record.getAddress2());
stmtSaveNewRecord.setString(8, record.getCity());
stmtSaveNewRecord.setString(9, record.getState());
stmtSaveNewRecord.setString(10, record.getPostalCode());
stmtSaveNewRecord.setString(11, record.getCountry());
int rowCount = stmtSaveNewRecord.executeUpdate();
ResultSet results = stmtSaveNewRecord.getGeneratedKeys();
if (results.next()) {
id = results.getInt(1);
}
} catch(SQLException sqle) {
sqle.printStackTrace();
}
return id;
}
发布你的应用程序
现在你已经写好了你的应用程序,你必须发布它给用户。Java技术应用程序可以使用多种发布策略。包括Java Web Start软件,Applet和独立的JAR文件。我以独立的JAR文件的形式发布了该应用程序。
ANT的构建文件build.xml,创建AddressBook.jar文件到dist目录。它也放置数据库JAR文件到lib子目录。该应用程序最终发布的结构如下:
AddressBook.jar
lib/derby.jar
在很多情况下,应用程序使用例如derby.jar这样的第三方类库时,都需要一个外部的执行脚本。这个脚本通常设置第三方JAR文件的classpath和执行该应用程序的JAR文件。这个方法很麻烦。然而,由于它需要多个脚本,具有代表的一个是支持主机操作系统。例如,如何支持该程序发布到Windows,Solaris和Linux平台,我宁愿为Windows平台创建一个run.bat批处理文件,为Solaris或Linux平台创建一个run.csh脚本。换言之,我们可以避免这些笨拙的执行脚本。
如果在AddressBook.jar的manifest文件里包含了classpath信息,你可以通过简单的命令行操作执行AddressBook.jar应用程序。在大多数平台,你可以在图形窗口界面中双击该JAR文件来运行该应用程序。在命令行下,你可以使用下面简单的执行命令:
java -jar AddressBook.jar
这样简单的发布和执行方案可以创建manifest.mf文件来实现,并成为AddressBook.jar文件的一部分。你可以写入信息到manifest文件里,并告诉Java编程语言解释器那个类包含了main方法和那些JAR文件应该被认为是classpath的一部分。下面的manifest文件做到了以上两点,当构建AddressBook.jar文件时,我们可以把它放在JAR文件里。
Manifest-Version: 1.0
Main-Class: com.sun.demo.addressbook.AddressFrame
Class-Path: lib/derby.jar
一旦你构建程序产生先前所显示的发布结构,你可以简单的发布成为一个ZIP文件。使用者可以轻松的解压该文件到任何位置,并能运行AddressBook.jar文件。AddressBook.jar文件将包含之前提到的manifest文件和告诉运行时环境哪个JAR文件应该在classpath里。当然,因为Java DB是嵌入到这个程序里的,它应该能找到lib/derby.jar并能正确运行。
概要
用Java DB工作是简单和有趣的。Java DB让你花最小的代价去创建和发布一个嵌入式数据库。仅仅需要记住几点技巧就能使你成功的使用Java DB工作了:
1. 请将derby.jar文件放在你开发环境的classpath里,以便Java技术编译器和运行时环境能找到该库并能编译和运行应用程序。
2. 设置derby.system.home系统属性去告诉Java DB在那里能找到数据库。你可以通过程序代码或命令行来设置该属性。
3. 创建一个构建程序,请确保将derby.jar文件放在你工程目录的lib子目录下。
4. 通过设置你的应用程序的JAR的manifest文件里的Class-Path属性,添加derby.jar到你的应用程序classpath里。
脚注
术语”Java Virtual Machine”和”JVM”意思是Java平台的虚拟机。