H5W3
当前位置:H5W3 > 其他技术问题 > 正文

Java SE 6 新特性: Java DB 和 JDBC 4.0

    2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络和 Instrumentation 方面都有不错的新特性和功能加强。 本系列 文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。

    本文是系列文章的第 5 篇,介绍了 Java SE 6 在数据库编程方面的新特性。

    Java DB:Java 6 里的数据库

    新安装了 JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 2MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby 功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby 得到了包括 IBM 和 Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 10.2.2 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥 Java DB 的世界,来探究如何使用它编写出功能丰富的程序。

    Hello, Java DB:内嵌模式的Derby

    既然有了内嵌(embedded)的数据库,就让我们从一个简单的范例(代码在 清单 1 中列出)开始,试着使用它吧。这个程序做了大多数数据库应用都可能会做的操作:在 DBMS 中创建了一个名为 helloDB 的数据库;创建了一张数据表,取名为 hellotable;向表内插入了两条数据;然后,查询数据并将结果打印在控制台上;最后,删除表和数据库,释放资源。

清单 1. HelloJavaDB 的代码

                public class HelloJavaDB {    public static void main(String[] args) {        try { // load the driver            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();            System.out.println("Load the embedded driver");            Connection conn = null;            Properties props = new Properties();            props.put("user", "user1");  props.put("password", "user1");           //create and connect the database named helloDB             conn=DriverManager.getConnection("jdbc:derby:helloDB;create=true", props);            System.out.println("create and connect to helloDB");            conn.setAutoCommit(false);            // create a table and insert two records            Statement s = conn.createStatement();            s.execute("create table hellotable(name varchar(40), score int)");            System.out.println("Created table hellotable");            s.execute("insert into hellotable values('Ruth Cao', 86)");            s.execute("insert into hellotable values ('Flora Shi', 92)");            // list the two records            ResultSet rs = s.executeQuery(                "SELECT name, score FROM hellotable ORDER BY score");            System.out.println("name\t\tscore");            while(rs.next()) {                StringBuilder builder = new StringBuilder(rs.getString(1));                builder.append("\t");                builder.append(rs.getInt(2));                System.out.println(builder.toString());            }            // delete the table            s.execute("drop table hellotable");            System.out.println("Dropped table hellotable");                        rs.close();            s.close();            System.out.println("Closed result set and statement");            conn.commit();            conn.close();            System.out.println("Committed transaction and closed connection");                        try { // perform a clean shutdown                 DriverManager.getConnection("jdbc:derby:;shutdown=true");            } catch (SQLException se) {                System.out.println("Database shut down normally");            }        } catch (Throwable e) {            // handle the exception        }        System.out.println("SimpleApp finished");    }}

本文地址:H5W3 » Java SE 6 新特性: Java DB 和 JDBC 4.0

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址