jdbc实现数据库数据提取_使用JDBC将数据提取到XML

本文档详细介绍了如何使用JDBC连接数据库并提取信息,然后将数据转化为XML格式。教程覆盖了JDBC的基础知识,包括实例化驱动、创建连接、执行SQL查询以及遍历结果。此外,还探讨了如何通过映射文件动态生成XML文档,适用于需要从数据库中抽取数据并以XML形式处理的Java开发者。
摘要由CSDN通过智能技术生成

jdbc实现数据库数据提取

我应该学习本教程吗?

本教程旨在帮助需要从数据库提取信息并将其放入XML文档的Java TM开发人员。

本教程假定您已经熟悉Java和XML,特别是文档对象模型(DOM)。 您应该熟悉Java编程,但是不需要掌握使用JDBC TM进行数据库连接的先验知识即可掌握本教程中描述的技术。 本教程简要介绍了SQL的基础知识。 不需要GUI编程知识,因为应用程序输入/输出是从命令行处理的。 中的链接相关主题包括转介到有关XML和DOM基础知识教程和仔细SQL背景资料。

本教程是关于什么的?

XML用于存储数据的效果非常好,以至于不可避免的是,有人会要求您从数据库中提取信息并像对待XML一样来操纵它。 JDBC是使用Java访问数据库的独立于供应商的方法。 本教程说明了如何实例化和使用JDBC驱动程序连接数据库以检索信息。 它还说明了SQL的基础知识,以及如何创建和使用JDBC查询的结果。

本教程的目的是从数据库中提取数据并创建DOM文档。 DOM文档的结构由XML映射文件确定,该文件演示了可将XML文件用于此目的的一种方法。

工具类

即使您阅读示例而不是尝试示例,本教程也将帮助您理解主题。 如果您确实想在阅读本教程时尝试这些示例,请确保已安装以下工具并且工作正常:

本教程中使用的约定

在本教程中,有几种用于增强材料的约定:

  • 需要输入的文本以bold monospace字体显示。 在某些代码示例中,粗体用于引起人们注意所附文本中引用的标签或元素。
  • 强调/斜体用于引起对窗口,对话框和特征名称的注意。
  • monospace字体显示文件名和路径名。
  • 在本教程中,与讨论无关的代码段已被省略,并用省略号( ... )代替...

通过JDBC访问数据库

什么是JDBC?

如果您已经完成了“使用JDBC将XML数据插入数据库中”教程,请随时跳过SELECT语句的剖析

不久之前,为了与数据库进行交互,开发人员必须为该数据库使用特定的API。 这使创建与数据库无关的应用程序很困难,即使不是不可能。

JDBC与ODBC(或开放数据库连接)相似,后者提供用于访问数据库的标准API中介。 如左图所示,可以使用标准的JDBC命令,并且JDBC驱动程序将它们转换为数据库的本机API。

在本教程中没有任何地方提到特定的数据库,因为选择基本上无关紧要。 所有命令都是标准的JDBC命令,驱动程序会将其转换为您选择的任何数据库的本机命令。 由于这种API的独立性,您可以轻松地使用其他数据库,而无需更改应用程序中的任何内容,除了驱动程序名称以及可能创建连接时使用的连接URL以外。

请参阅相关主题上下载相应的JDBC驱动程序数据库的信息。 几乎所有数据库都可以使用150多种JDBC驱动程序。

对于没有可用的JDBC驱动程序的数据库,甚至还有一些选项。

图1.没有JDBC驱动程序的数据库示例
没有JDBC驱动程序的数据库示例

JBDC-ODBC桥

只要有ODBC驱动程序,就没有必要为数据库使用特定的JDBC驱动程序。 您可以改用JDBC-ODBC 桥 。 应用程序调用网桥,该网桥将命令转换为ODBC,而ODBC驱动程序将其转换为本地API。

由于各种原因,建议不要使用JDBC-ODBC桥来访问数据库,这涉及性能和配置-命令必须通过两个API传递,并且必须在每个客户端上都安装和配置ODBC驱动程序-但这是可以接受的如果没有可用的纯JDBC驱动程序,则用于测试和开发。

如果选择使用网桥,请通过选择“ Start>Settings>Control Panel>ODBC Data Sources在Windows系统上创建系统数据源名称(DSN)。 记下DSN的名称,因为在创建连接时将被引用。

图2.具有JDBC和驱动程序的数据库示例
具有JDBC和驱动程序的数据库示例

设置数据库和驱动程序

create table products (
   product_id   numeric primary key,
   product_name varchar(50),
   base_price   numeric,
   size         numeric,
   unit         varchar(10),
   lower        numeric,
   upper        numeric,
   unit_price   numeric )

首先,确保选择安装的任何数据库都已安装并正在运行,并且驱动程序可用。 JDBC驱动程序可以从http://industry.java.sun.com/products/jdbc/drivers下载。

创建数据库后,创建必要的表。 本教程仅使用一个表products 。 其结构在左侧。 使用适合您的数据库的步骤创建表。

注意:通常情况下,此数据将分解为至少两个相关表; 为了简单起见,该示例仅代表一个示例。

访问数据库的过程

使用Java与数据库进行交互通常包括以下步骤:

  1. 加载数据库驱动程序。 这可以是JDBC驱动程序或JDBC-ODBC桥。
  2. 创建到数据库的Connection
  3. 创建一个Statement对象。 该对象实际上执行SQL或存储过程。
  4. 创建一个ResultSet并用已执行查询的结果填充(如果目标是检索或直接更新数据)。
  5. ResultSet检索或更新数据。

java.sql软件包包含JDBC 2.0 Core API,作为JavaTM 2 SDK Standard Edition发行版的一部分来访问数据库。 作为Java 2 SDK(企业版)的一部分分发的javax.sql程序包包含JDBC 2.0可选程序包API。

本教程仅使用JDBC 2.0 Core API中的类。

实例化驱动程序

要访问数据库,请首先加载JDBC驱动程序。 在任何给定时间,可能有许多不同的驱动程序可用; 通过尝试与已知的每个驱动程序建立连接,是由DriverManager决定使用哪个驱动程序。 成功连接的第一个应用程序将使用它。 DriverManager可以通过两种方式知道驱动程序存在。

第一种方法是使用Class.forName()直接加载它,如本示例所示。 加载驱动程序类后,它将向DriverManager注册,如下所示:

public class Pricing extends Object {

   public static void main (String args[]){

      //For the JDBC-ODBC bridge, use
      //driverName = "sun.jdbc.odbc.JdbcOdbcDriver"
      String driverName = "JData2_0.sql.$Driver";

      try {
         Class.forName(driverName);
      } catch (ClassNotFoundException e) {
         System.out.println("Error creating class: "+e.getMessage());
      }
   }
}

使用成功加载的驱动程序,应用程序可以连接到数据库。

DriverManager可以找到驱动程序的第二种方法是循环浏览sql.drivers系统属性中找到的所有驱动程序。 sql.drivers属性是用冒号分隔的潜在驱动程序列表。 始终在动态加载类之前检查此列表,因此,如果要使用特定的驱动程序,请确保sql.drivers属性为空或以所需的驱动程序开头。

创建连接

加载驱动程序后,应用程序即可连接到数据库。

DriverManager通过静态getConnection()方法建立连接,该方法将数据库的URL作为参数。 该URL通常被引用为:

jdbc:<sub-protocol>:databasename

但是,可以使用活动驱动程序可以理解的任何格式来编写参考URL。 有关URL格式,请查阅JDBC驱动程序的文档。

子协议起作用的一种情况是通过ODBC进行连接。 如果直接通过ODBC访问具有DSN pricing的示例数据库,则URL可能是:

odbc:pricing

这意味着要通过JDBC连接,URL为:

jdbc:odbc:pricing

实际的连接在下面创建:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Pricing extends Object {

   public static void main (String args[]){

      //For the JDBC-ODBC bridge, use
      //driverName = "sun.jdbc.odbc.JdbcOdbcDriver"
      //and
      //connectURL = "jdbc:odbc:pricing"
      String driverName = "JData2_0.sql.$Driver";
      String connectURL = "jdbc:JDataConnect://127.0.0.1/pricing";
      Connection db = null;	   
      try {
         Class.forName(driverName);
         db = DriverManager.getConnection(connectURL);
      } catch (ClassNotFoundException e) {
         System.out.println("Error creating class: "+e.getMessage());
      } catch (SQLException e) {
         System.out.println("Error creating connection: "+e.getMessage());
      }
   }
}

成功建立连接后,就可以执行任何必需的数据库操作(例如,插入或更新数据)。

断开连接

由于StatementConnection是对象,因此Java将对其进行垃圾回收,从而释放它们占用的数据库资源。 这可能会让您认为这意味着您不必担心关闭这些对象,但这不是事实。

Java应用程序本身很有可能拥有大量可用资源,这意味着垃圾收集的频率较低。 当Java应用程序具有大量资源时,可用的数据库资源也会受到限制。 Java对象可能占用了许多数据库资源,而Java对象可能已经很容易被应用程序关闭了。

确保无论是否有任何错误,这些对象都已关闭,这很重要,因此请在已经存在的try-catch块中添加一个finally块:


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值