设为首页 加入收藏

TOP

从JDBC数据库提取对XML/DOM友好的数据
2014-11-23 18:00:53 】 浏览:6649
Tags:JDBC 数据库 提取 XML/DOM 友好 数据

  从JDBC数据库提取对XML/DOM友好的数据


  当前的Java版本提供了完备的工具,可将输出内容从关系数据库查询转换成XML。最终获得的将是一个DOM(文档对象模型)文档对象。利用XSL(可扩展样式语言),它进而能转换成任意输出格式。本文介绍如何构建一个接口,用它读取与JDBC兼容的任何关系数据库,创建一个结果集,以便转换成任何类型的字符输出。


  · 接口


  最开始必须定义一个接口。这个接口在实现后,应该能建立一个数据库连接、向其传递一个SQL查询、读取结果以及创建一个DOM文档对象。下面的DataBaseHandler接口定义了与数据库进行交互的行为(注意,本例缺少import语句,所以不能编译)。尤其要注意的是,getDocument()查询所返回的文档将由其他进程转换成所需的输出类型,这种转换是独立于数据库的。


  public interface DataBaseHandler{


  Document getDocument(String sqlQuery);
  String getUrlString();
  void setUrlString(String urlString);
  String getUserName();


  void setUserName(String userName);
  String getPassword();
  void setPassword(String password);
  String getDriverName();
  void setDriverName(String driverName);
  }


  这是与数据库交互所需的最起码的行为。它包括几个get和set方法,用于确保数据库驱动程序名称、用户名和密码都得到了设置,或者以后能够检索到。下面总结了DataBaseHandler的需求:


  urlString
  userName
  password
  sqlQuery string
  driverName
  调用set方法之后,getDocument()方法将完成所有实际的工作:


  Document getDocument(String sqlQuery);


  传给set方法的所有输入都可能已经传给getDocument()方法。从重用性的角度说,应该对这两个方法进行分隔,使类的实现能方便和灵活地利用这种多重输入传递功能。
接口的一个抽象实现


  接着要定义一个抽象类,它负责实现要求的大多数行为和操作,但某种特定数据库类型需要的那些行为必须排除在外。AbstractDataBaseHandler执行set和get方法的泛化操作,而且一旦设置好所有数据库处理参数,AbstractDataBaseHandler就要执行与数据库进行交互的泛化操作。惟一需要拿掉的就是与特定数据库类型有关的那些细节,以及为了获得DataBaseHandler的一个具体实现而必须定义的设置细节。


  get和set方法负责设置私有类变量;通过扩展AbstractDataBaseHandler而创建数据库处理器对象时,这些私有类变量将发生变化。这个过程是非常直观易懂的,如清单A所示。


  getDocument()方法中的操作位于一个try catch块中。数据库事务处理过程中一旦发生任何错误,或者要求的任何输入参数没有设置,错误就会被捕捉。SQLException允许多个异常链接到一起,这为我们带来了极大的方便。你必须遍历SQLException,检查数据库交互过程中可能发生的所有问题。


  } catch (SQLExceptionsqle) {
  while(sqle != null) {
  System.err.println ("**** SQLException ****\n");
  System.err.println ("** SQLState: " + sqle.getSQLState() + "\n");
  System.err.println ("** Message: " + sqle.getMessage() + "\n");
  System.err.println ("** Error Code: " + sqle.getErrorCode() + "\n");
  System.err.println ("***********\n");
  /* There could be multiple exception messages chained together. */
  sqle= sqle.getNextException();


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇jdbc应用--数据库连接全集 下一篇通用数据库操作BEAN

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目