Java JDBC数据库编程技术与实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
…
Connection conn = DatabaseConnection.getConnection(); //获得数据库连接对象
strSQL = “{call demo_account(?,?,?,?,?,?,?)}”;
的实例。 有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、
PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而
来)。 该接口提供了可以被执行的基本的 SQL 语句,作为提高性能的一项措施,PreparedStatement
Connection con = DriverManager.getConnection(url, username,password);
4. SQL 声明接口:Statement
java.sql.Statement 提供在基层连接上运行 SQL 语句,并且访问结果。Connection 接口提供了生 成 Statement 的方法。在一般情况下,我们通过 connection.createStatement()方法就可以得到 Statement
java.sql 包中定义了很多接口和类,但是经常使用却不是很多。在这里介绍几个常用的接口和类。 1. 加载驱动程序接口:Driver java.sql.Driver 是所有 JDBC 驱动程序必须实现的接口。我们在编程中要连接数据库,必须先装 载特定厂商提供的数据库驱动程序(Driver),如果使用 MySQL 数据库驱动,那么装载方法如下。
//创建预编译语句对象
Байду номын сангаас
PrepareStatement pstmt = conn.prepareStatement(“insert into user_info values(?,?,?,?,?,?,?)”;
pstmt.setString(1.”hellking”);
//设置预编译 SQL 语句中的第一个参数
图 23.2 JDBC 工作模式
JDBC 的主要功能如下。 建立与数据库或者其他数据源的连接; 向数据库发送 SQL 命令; 处理数据库的返回结果。
23.1.2 JDBC 的 4 种驱动程序
为了与某个数据库连接,必须要具有适合该数据库的驱动程序。JDBC 驱动程序主要有以下 4 种基本类型:
1. JDBC-ODBC 桥加 ODBC 驱动程序 JDBC-ODBC 桥产品经由 ODBC 驱动程序供 JDBC 访问数据库。ODBC(开放式数据库连接) 的出现要比 JDBC 早,广泛地应用于连接各种环境中的数据库。JDBC-ODBC 桥加 ODBC 驱动程序 实际是把所有 JDBC 的调用传递给 ODBC,再由 ODBC 调用本地数据库驱动代码。在本书中,将采 用此驱动程序+Access 数据库进行演示。这种驱动程序的主要优点有 3 个:
23.1.4 设置环境变量使得驱动程序可被访问
获得驱动程序以后,需要将驱动程序加入 CLASSPATH 的设定之中。例如作者本人的 SQL Server 2005 的驱动程序路径为“c:\workspace\library\sqljdbc.jar”,则必须在环境变量 CLASSPATH 中添加 路径“c:\workspace\library\sqljdbc.jar”,如图 23.3 所示。
ResultSet rst = stmt.executeQuery(“select * from sometable”); //执行查询,获得查询结果集
…
PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句,它的典型使用如下所示。
…
Connection conn = DatabaseConnection.getConnection(); //获得数据库连接对象
23.1.1 JDBC 技术介绍
应用程序可以通过数据库厂商提供的 API 以及 SQL 语句对数据库进行操作,如图 23.1 所示。
图 23.1 应用程序访问数据库
在此模式下,看到不同的数据库有不同的 API 操作界面。这样的话,对于实现同样功能的应用 程序,针对不同的数据库,开发人员需要编写不同的代码,这样对 Java 设计人员是很不方便的。于 是 JDBC 应运而生。
对象提供了可以与查询信息一起预编译的一种语句类型。CallableStatement 对象用来封装数据库中
存储过程的执行。
Statement 提供了许多方法,最常用的方法如下。 execute() 运行语句,返回是否有结果集。 executeQuery() 运行查询语句,返回 ReaultSet 对象。 executeUpdate() 运行更新操作,返回更新的行数。 addBatch() 增加批处理语句。 executeBatch() 执行批处理语句。 clearBatch() 清除批处理语句。
Statement 对象用于执行不带参数的简单 SQL 语句,它的典型使用如下所示。
…
Connection conn = DatabaseConnection.getConnection(); //获得数据库连接对象
Statement stmt = conn.createStatement();
//创建 SQL 语句对象
这种驱动程序根据三层结构建立:网络协议驱动、中间件服务器和数据库服务。该类型的驱动 程序由中间件服务器提供,这样客户端程序可以使用数据库无关的协议和中间件服务器进行通信, 中间件服务器再将客户端的 JDBC 调用转发给数据库进行处理。这种方式的驱动程序有以下优点:
不需要客户机上有任何本地代码。 不需要客户安装任何程序。 大部分功能实现都在 server 端,所以这种驱动可以设计的很小,可以非常快速的加载到内
pstmt.setInt(2,20);
//设置预编译 SQL 语句中的第二个参数
pstmt.setBoolean(3,true);
//设置预编译 SQL 语句中的第三个参数
...
pstmt.executeUpdate();
//执行 SQL 语句
...
CallableStatement 对象用于执行对数据库已存储过程的调用,它的典型使用如下所示。
它提供了连接几乎所有平台上的所有数据库的能力。 它可能是访问低端桌面数据库(例如 Access)和应用的程序的唯一方式。 操作简单,适应初学才练习。 这种驱动程序的缺点如下。 ODBC 驱动程序需要安装并加载到目标机器上。 JDBC 和 ODBC 之间的转换将在很大程度上影响系统的性能。 2. 本地 API 和部分 Java 编写的驱动程序 这种类型的驱动程序是把客户机 API 上的 JDBC 调用转换为对数据库的调用。也就是说,这种 类型的驱动程序是通过调用本地 API 来实现与数据库的通信。这种类型的驱动程序要比采用类型 1 方式的速度快很多,但它仍然存在着一些缺点: 它仍然需要在目标机器上安装本地代码。 JDBC 所依赖的本地接口在不同的 Java 虚拟机供应商以及不同的操作系统上是不同的。 3. JDBC 网络纯 Java 驱动程序
Java JDBC 数据库编程技术与实例
软件的本质就是处理数据,而在商业应用中,数据往往需要专门的数据库来存放。所以在软件 开发过程中,几乎所有的项目都要使用到数据库。那么在 Java 项目中是如何对数据库进行操作的 呢?这就需要用到 Java 数据库应用程序。
在这一章中,将学习如下内容: JDBC 技术和驱动程序; java.sql 包下的常用类; JDBC 操作数据库实例。
存中。 缺点为:中间件层仍然需要有配置其他数据库驱动程序,并且由于多了一个中间层传递数据, 它的执行效率还不是最好。 4. 本地协议纯 Java 驱动程序
该类型的驱动程序中包含了特定数据库的访问协议,使得客户端可以直接和数据库进行通信。 这种方式的驱动程序有以下优点:
效率高,速度快。 驱动程序可以动态的被下载。 缺点为:对于不同的数据库需要下载不同的驱动程序。 这四种驱动程序的属性如表 23.1 所示
图 23.3 设置驱动程序路径
我们在项目实训中使用的是 NetBeans IDE,它已经集成了对 MySQL 驱动程序的应用,自带了 MySQL 数据库驱动程序。我们只需要在项目库引用中导入驱动即可,不必再配置环境变量 CLASSPATH 了。
23.2 java.sql 包
在 JDBC 介绍中可以看到,JDBC 是采用接口和实现分离的思想设计了 Java 数据库编程的框架。 JDBC 的接口包含在 java.sql 及 javax.sql 包中,其中 java.sql 属于 JavaSE,javax.sql 属于 JavaEE。在 这里主要对 java.sql 包进行讲解。
表 23.1 驱动程序的类型及其属性
驱动程序种类 JDBC-ODBC桥加ODBC 本地API和部分Java JDBC网络纯Java 本地协议纯Java
纯Java 非 非 是 是
网络协议 直接 直接 要求连接器 直接
23.1.3 如何获得 JDBC 驱动程序
在本实例中,我们使用第 4 种类型的驱动程序。 要想得到某个数据库的驱动程序,可以从该数据库厂商的网站上进行下载,例如 SQL Server 2005 JDBC Driver 的下载地址为:http://www.microsoft.com。也可以访问 Oracle 公司网站,得到有 关各种数据库的 JDBC 驱动程序的信息。 我们在开发时使用的 NetBeans IDE,它已经自动包含有了 MySQL 数据库的驱动程序,我们就 不需要再单独下载 MySQL 的驱动程序了。
Class.forName="com.mysql.jdbc.Driver ";
2. 管理驱动程序类:DriverManager DriverManager 类是 JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序, 并在数据库和驱动程序之间建立连接。当 DriverManager 激发 getConnection()方法时,DriverManager 类首先从它已加载的驱动池中找到一个可以接受该数据 URL 的驱动程序,然后请求该驱动程序使 用相关的数据库 URL 连接到数据库中。于是,getConnection()方法建立了与数据库的连接。 3. 数据库连接接口:Connection Connecton 对象代表与数据库的连接,也就是在已经加载的 Driver 和数据库之间建立连接。你 必须创建一个 Connection class 的实例,其中包含你的数据库的信息。 连接过程包括所执行的 SQL 语句和在该连接上所返回的结果。一个应用程序可与单个数据库 有一个或多个连接,或者可与许多数据库有连接。DriverManager 的 getConnection()方法,将建立在 JDBC URL 中定义的数据库的 Connection 连接上,代码如下。
23.1 JDBC 技术概述
JDBC(Java Database Connectivity)是一种用于执行 SQL 语句的 Java API。它由一组用 Java 编 程语言编写的类和接口组成,为 Java 应用程序与各种不同数据库之间进行对话提供了一种便捷的方 法,使得开发人员能够用纯 Java API 来编写具有跨平台性的数据库应用程序。
JDBC 的出现使 Java 程序对各种数据库的访问能力大大增强。通过使用 JDBC,开发人员可以 很方便地将 SQL 语句传送给几乎任何一种数据库。
JDBC 的工作模式如下面的图 23.2 所示。从图中可以看到,应用程序通过调用 JDBC 来操作数 据库的过程,其实是由数据库厂商提供的 JDBC 驱动程序来负责的。如果要更换数据库,只要更换 驱动程序,并在 JDBC 中载入新的驱动程序来源,即可完成数据库系统的变更。换句话说,使用 JDBC 后就没有必要写一个程序访问 Oracle 数据库,而另一个程序访问 SQL Server 数据库,再写一个程 序访问 DB2 了。