首页 > java > JDBC 4.0具有哪些新特性?

JDBC 4.0具有哪些新特性?

2007年4月24日 发表评论 阅读评论

下面按照上述四类展开详述:

驱动及连接管理

驱动及连接的使用和结果集管理 — 在 JDBC 的很多地方都发生了显著的变化

连接数据库变得更加容易

如果您曾经有过 JDBC 开发的经验 , 那么我确信您还保存着一份建立数据库连接所必须的工作列表 . 而列表中的第一项即加载一个合适的驱动程序 . 您是否想过这个步骤应该被改进呢 ? 在此版 JDBC 中做到了 . 您不必再显式地加载 Class.forName 了 . 当您的程序首次试图连接数据库时 , DriverManager 自动加载驱动到当前应用的 CLASSPATH . 这是 JDBC 的一个比较大的改动 .

尽管 DriverManager 现在可以自动地加载驱动 , 建立一个 DataSource 对象 仍是获取连接的推荐的方法 . 因为可以在配置中将数据源指向不同的数据库, DataSource 更具透明性和灵活性。 这样就可以访问另一个数据库实例不需更改现有的任意一行代码 , 甚至数据库的驱动完全不同也没有关系 .

ResultSet 的使用变得更为灵活

ResultSet 接口的层次结构当前为编程的灵活性提供了一些新的机制 . RowSet 子接口滚动、可提交并可离线编辑的 ResultSet . WebRowSet 子接口提供了从数据库表中获取数据 , 并将其序列化为 XML 文档 , 抑或是将 XML 解析成 result set 的能力 . 尽管上个版本的 JDBC 也提供了 RowSet 接口层次 ,当前的版本对于 SQLXML 数据类型支持得更好 ( 稍后讨论 ) ,这些特性是的 JDBC 编程更加容易且具灵活性 .

提供了更多的 API

本版 JDBC 提供了更多的 API 以实现访问 SQL:2003 具备的新特性 . 此外 , 为了更好的操纵修改数据, JDBC 也增添了许多的方法。 .

现在我们来看一些代码并讨论下面 Example1 类的输出结果 . 它将连接嵌入式的 Apache Derby 数据库并在控制台上显示输出结果 . 尽管 JDBC 4.0 已推出几个月了 , 笔者发现只有 Apache Derby 提供了支持 JDBC 4.0 规范的驱动 ( 截至 2007 年 3 月 ). 本文的所有例子均用 JDK 1.6 和 Apache Derby 数据库 10.2.2.0 开发 .

public class Example1 {

public static void main(String[] args) {



String dbName = “example1”;

String tableName = “stu1”;

ds = new EmbeddedDataSource40();

ds.setDatabaseName(dbName);

String connectionURL = “jdbc:derby:”+dbName+”;create=true”;

try {

con = ds.getConnection();

stmt = con.createStatement();

rs = stmt.executeQuery(“select * from “+tableName);

int colCount= rs.getMetaData().getColumnCount();

for (int j=0; j< colCount; j++){
System.out.print(rs.getMetaData().getColumnName(j+1)

+ “\t”);

}

while (rs.next()) {

System.out.print(“\n”);

for (int i = 0; i < colCount; i++) {
System.out.print(rs.getString(i + 1) + “\t”);

}

}

} catch (SQLException e) {

e.printStackTrace();

}

finally{

//close connections

}

}

}

如果在 example1 数据库的 stu1 表中有数据的话 , 编译并运行 Example1.java 将在控制台获得以下输出:

ID NAME COURSE

1001 John Doe Statistics

1002 Jack McDonalds Linear Algebra

如果想看 DriverManager 如何自动加载 JDBC 驱动 , 可以将 Example1 中的: con=ds.getConnection() 替换为: con=DriverManager.getConnection(connectionURL) . 该类将产生相同的输出。正如您所看到的,再也不用显式地调用 Class.forName() 了 .

分类: java 标签: 1,718 次阅读
原文链接:http://www.wenhq.com/article/view_12.html
欢迎转载,请注明出处:亲亲宝宝
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.