日期:2014-05-16  浏览次数:20423 次

JDBC教程

目标:

设计多层数据库应用架构

用JDBC1.0建设一个多层数据库应用架构

面向对象的数据库应用设计

JDBC2.0的新属性介绍

?

内容:

?

JDBC简介

使用JDBC

OOAD和数据库设计

JDBC高级话题

JDBC标准扩展

Row set 实现

JDBC 和应用程序架构

?

第一部分? JDBC简介

?

JDBC 是Java Database Connectivity的简称

?

连接数据库的方法分为

?

1. ODBC:基于C的接口连接基于SQL的数据库引擎

2. JDBC:Java版本的ODBC

?

JDBC可以实现:

?

1. 连接数据库

2.发送SQL请求

3.处理数据库的返回结果

?

四种类型的JDBC Driver

?

1. 桥接ODBC

?2. 调用本地的RDBMS接口

3. 调用DBMS的服务

4. 通过网络协议与DBMS交流

?

JDBC的API:java.sql和javax.sql,其中javax.sql是Java2的扩展功能。

?

相关的接口和类

?

Driver

DriverManager

Connetion

Statement

PreparedStatement

CallableStatement

ResultSet

DatabaseMetadata

ResultSetMetadata

Types

?

第二部分? 使用JDBC

?

使用JDBC的流程

?

1. 注册一个JDBC驱动(JDBCDriver)

2. 创建一个JDBC连接

3. 创建一个Statement

4. 执行一个SQL

5. 处理返回结果

6. 关闭JDBC连接

?

1. 注册一个JDBC驱动

?

?

?JDBC驱动是用来连接数据库的,JDBC的API会加载第一个可以连接的驱动,所以你可以定义多个驱动。

?

?

?经常使用的JDBC驱动

?

1. JDBC-ODBC:sun.jdbc.odbc.JdbcOdbcDriver

2. Oracle: oracle.jdbc.driver.OracleDriver

?

?

?2. 创建一个JDBC连接

1. DriverManager类调用getConnection(urlString)函数

2. 如果驱动返回成功,DriverManager创建一个链接

3. 如果失败,返回null,并检查下一个驱动

?

经常使用的连接url

?

1. JDBC-ODBC: jdbc:odbc:<DB>

2. Oracle:

jdbc:oracle:oci:@<SID>

jdbc:oracle:thin:@<SID>

?

3. 调用getConnection的两种方法

?

  1. getConnection(String url)
  2. getConnection(String url,java.util.Properties info)
  3. getConnection(String url,Stirng user,String password)

??? 其中getConnection(String url,java.util.Properties info),可以属性写入属性文件里面,用java.util.Properties类来加载。

?

??? 如:

???

Class.forName(sDBDriver);
			Properties properties = new Properties();
			FileInputStream fis = new FileInputStream(new File(new URI(
					"file:///d:/jdbc.properties")));
			properties.load(fis);

			Connection conn = DriverManager.getConnection(sConnStr, properties);

?

?也可以使用驱动直接连接的方法:

?

Properties properties = new Properties();
			FileInputStream fis = new FileInputStream(new File(new URI(
					"file:///d:/jdbc.properties")));
			properties.load(fis);
			com.microsoft.jdbc.sqlserver.SQLServerDriver driver = new com.microsoft.jdbc.sqlserver.SQLServerDriver();
			Connection conn = driver.connect(sConnStr, properties);

?

这个时候就不需要:Class.forName

?

?3. 创建一个Statement

创建一个Statement对象,通过Connection.createStatement的方法。

?

在多次进行查询时,PreparedStatement比Statement更有效率。

?

CallableStatement对象,让你可以使用SQL请求以外的请求,例如存储过程。

?

4. 执行SQL

?

执行SQL通过三个方法分别是:

?

executeQuery();??????? // 用来查询

executeUpdate();????? // 用来更新

execute();???????????????? // 用来执行存储过程

?

5. 处理返回结果

?

ResultSet会保持当前的游标,最初ResultSet的游标会在第一行之前。

?

6. 关闭数据库连接

应该按ResultSet,Statement,Connection的顺序把连接关闭

?

if(rs!=null){
					try{
						rs.close();
					}catch(Exception ex){
						ex.printStackTrace();
					}
				}
				if(ps!=null){
					try{
						ps.close();
					}catch(Exception ex){
						ex.printStackTrace();
					}
				}
				if(conn!=null){
					try{
						conn.close();
					}catch(Exception ex){
						ex.printStackTrace();
					}
				}