JDBC编程
课程介绍
目的:掌握和熟练运用JDBC编程技术
内容:数据库简介、JDBC概念及其工作原理、JDBC编程、JDBC-ODBC编程
重点:JDBC编程
难点:可滚动和可更新结果集、高级SQL类型BLOB/CLOB的使用
JDBC编程
数据库简介
JDBC基本概念
JDBC编程
JDBC-ODBC编程
JDBC编程进阶
一. 数据库简介
关系型数据库
SQL语言
ODBC
数据库入门
数据库(Data Base, DB)
数据库管理系统(Data Base Management System, DBMS)
关系型数据库
关系型数据库(Relationship Data Base, RDB)
关系型数据库管理系统(RDBMS)
SQL语言(Structured Query Language)
使用关系模型的数据库语言,用于和各类数据库的交互,提供通用的数据管理和查询功能。
常用SQL指令:
SELECT 、INSERT、DELETE、UPDATE、CREATE、DROP
二. JDBC基本概念
JDBC概述
JDBC驱动程序
JDBC URL
JDBC概述
JDBC(Java DataBase Connectivity)
JDBC功能:
支持基本SQL语句,在Java程序中实现数据库操作功能并简化操作过程
提供多样化的数据库连接方法
为各种不同的数据库提供统一的操作界面
JDBC API
java.sql.DriverManager类
java.sql.Driver接口
java.sql.Connection接口
java.sql.Statement接口
java.sql.ResultSet接口
JDBC工作原理
JDBC驱动程序
什么是驱动程序?
数据库驱动程序(DataBase Driver)
JDBC驱动程序分类:
第一类:JDBC-OCBC桥
第二类:Java到本地API
第三类:Java到网络协议
第四类:Java到数据库协议
数据库URL
JDBC技术中使用数据库URL来标识目标数据库
数据库URL格式:
jdbc:<子协议名>:<子名称>
"jdbc"为协议名,确定不变;
<子协议名>指定目标数据库的种类和具体连接方式;
<子名称>指定具体的数据库/数据源连接信息(如数据库服务器IP地址、通信端口、ODBC数据源名称、用户名/密码等)。
子名称的格式和内容随子协议的不同而改变。
数据库URL举例:
jdbc:oracle:thin:@166.111.78.98:1521:ora9
jdbc:microsoft:sqlserver://127.0.0.1:1433
jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubs
三. JDBC编程
JDBC编程基本步骤
执行SQL语句
获取数据库元数据
访问SQL Server数据库
JDBC编程基本步骤
JDBC编程基本步骤
加载驱动程序
建立到指定数据库的连接
提交数据库查询
取得查询结果
应用举例:
例18-1 JDBCExample.java
ResultSet常用getXXX()方法
方法名称 返回值类型
getBoolean() boolean
getByte() byte
getBytes() byte[]
getDate() java.sql.Date
getDouble() double
getFloat() float
getInt() int
getLong() long
getObject() Object
getShort() short
getString() java.lang.String
getTime() java.sql.Time
SQL-Java类型对应关系
SQL类型 Java 类型
BIT boolean
TINYINT byte
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
Date java.sql.Date
FLOAT double
DOUBLE double
REAL float
INTEGER int
BIGINT long
SMALLINT short
CHAR java.lang.String
VARCHAR java.lang.String
LONGVARCHAR java.lang.String
执行SQL语句
执行DML语句
执行DDL语句
访问SQL Server数据库
准备SQL Server数据库JDBC驱动程序
从微软网站下载JDBC驱动程序安装文件
本地安装该驱动程序包
重新设置CLASSPATH环境变量
五. JDBC编程进阶
使用属性文件配置运行环境信息
OCI方式访问Oracle数据库
可滚动和可更新结果集
预处理语句
调用存储过程
事务处理
批处理
高级SQL类型BLOB/CLOB
使用属性文件配置运行环境信息
将数据库连接信息(URL、用户名/密码等)保存到专门的属性文件中,而不在程序中直接给出
可滚动/可更新结果集
结果集类型
不可滚动(FORWARD_ONLY)
滚动不敏感(SCROLL_INSENSITIVE)
滚动敏感(SCROLL_SENSITIVE)
结果集并发模式
只读的(READ_ONLY)
可更新的(UPDATABLE)
Connection接口中提供的重载方法createStatement()用于获取可滚动/可更新结果集。
检测结果集类型
结果集类型与并发模式常量
常量含义
ResultSet. TYPE_FORWARD_ONLY 不可滚动结果集
ResultSet. TYPE_SCROLL_INSENSITIVE 滚动不敏感结果集
ResultSet. TYPE_SCROLL_SENSITIVE 滚动敏感结果集
ResultSet. CONCUR_READ_ONLY 只读结果集
ResultSet. CONCUR_UPDATABLE 可更新结果集
使用JDBC元数据API进行检测
使用可滚动结果集
对于可滚动结果集,可以使用ResultSet接口中定义的下述方法进行遍历:
boolean next()
boolean previous()
boolean first()
boolean last()
void beforeFirst()
void afterLast()
boolean relative(int rows)
boolean absolute(int row)
int getRow()
使用可更新结果集
对于可更新结果集,可以使用ResultSet接口中定义的下述方法进行更新操作:
void updateXXX(String columnName, XXX x)
void updateXXX(int columnIndex, XXX x)
void updateRow()
void moveToInsertRow()
void insertRow()
void moveToCurrentRow()
void deleteRow()
void cancelRowUpdates()
预处理语句
java.sql.PreparedStatement接口提供了执行预编译SQL语句的功能,它继承了java.sql.Statement接口。
Connection对象的prepareStatement(String sql)方法可创建并返回PreparedStatement对象。
PreparedStatement接口主要方法:
void setXXX(int parameterIndex, XXX x)
ResultSet executeQuery()
int executeUpdate()
调用存储过程
java.sql.CallableStatement接口提供了调用数据库服务器端存储过程(Procedure)的功能,它继承了java.sql. PreparedStatement接口。
Connection对象的prepareCall(String sql)方法可创建并返回CallableStatement对象。
CallableStatement接口主要方法:
void setXXX(int parameterIndex, XXX x)
boolean execute()
事务处理
和数据库中的事务管理模式相对应,JDBC中的Connection对象也可分为自动提交和非自动提交两种模式。
JDBC驱动程序的默认事务管理模式为"自动提交"。
Connection接口提供的事务处理相关方法:
void setAutoCommit(boolean autoCommit)
boolean getAutoCommit()
void commit()
void rollback()
事务处理之部分回滚
从JDBC3.0开始支持在事务中使用保存点技术,以实现对数据库事务的进一步控制、即支持部分回滚功能。
java.sql.Savepoint接口表示数据库事务中的保存点。
在Connection对象的rollback()方法中可以对当前事务中的保存点进行引用,从而将事务回滚到该保存点。
批处理
JDBC2.0开始提供了对数据库操作的批处理(Batch Processing)功能,使用批处理功能避免了向数据库进行一连串的调用,从而显著提高程序的运行效率。
Statement接口提供的批处理相关方法:
void addBatch(String sql)
int[] executeBatch()
void clearBatch()
课程介绍
目的:掌握和熟练运用JDBC编程技术
内容:数据库简介、JDBC概念及其工作原理、JDBC编程、JDBC-ODBC编程
重点:JDBC编程
难点:可滚动和可更新结果集、高级SQL类型BLOB/CLOB的使用
JDBC编程
数据库简介
JDBC基本概念
JDBC编程
JDBC-ODBC编程
JDBC编程进阶
一. 数据库简介
关系型数据库
SQL语言
ODBC
数据库入门
数据库(Data Base, DB)
数据库管理系统(Data Base Management System, DBMS)
关系型数据库
关系型数据库(Relationship Data Base, RDB)
关系型数据库管理系统(RDBMS)
SQL语言(Structured Query Language)
使用关系模型的数据库语言,用于和各类数据库的交互,提供通用的数据管理和查询功能。
常用SQL指令:
SELECT 、INSERT、DELETE、UPDATE、CREATE、DROP
二. JDBC基本概念
JDBC概述
JDBC驱动程序
JDBC URL
JDBC概述
JDBC(Java DataBase Connectivity)
JDBC功能:
支持基本SQL语句,在Java程序中实现数据库操作功能并简化操作过程
提供多样化的数据库连接方法
为各种不同的数据库提供统一的操作界面
JDBC API
java.sql.DriverManager类
java.sql.Driver接口
java.sql.Connection接口
java.sql.Statement接口
java.sql.ResultSet接口
JDBC工作原理
JDBC驱动程序
什么是驱动程序?
数据库驱动程序(DataBase Driver)
JDBC驱动程序分类:
第一类:JDBC-OCBC桥
第二类:Java到本地API
第三类:Java到网络协议
第四类:Java到数据库协议
数据库URL
JDBC技术中使用数据库URL来标识目标数据库
数据库URL格式:
jdbc:<子协议名>:<子名称>
"jdbc"为协议名,确定不变;
<子协议名>指定目标数据库的种类和具体连接方式;
<子名称>指定具体的数据库/数据源连接信息(如数据库服务器IP地址、通信端口、ODBC数据源名称、用户名/密码等)。
子名称的格式和内容随子协议的不同而改变。
数据库URL举例:
jdbc:oracle:thin:@166.111.78.98:1521:ora9
jdbc:microsoft:sqlserver://127.0.0.1:1433
jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubs
三. JDBC编程
JDBC编程基本步骤
执行SQL语句
获取数据库元数据
访问SQL Server数据库
JDBC编程基本步骤
JDBC编程基本步骤
加载驱动程序
建立到指定数据库的连接
提交数据库查询
取得查询结果
应用举例:
例18-1 JDBCExample.java
ResultSet常用getXXX()方法
方法名称 返回值类型
getBoolean() boolean
getByte() byte
getBytes() byte[]
getDate() java.sql.Date
getDouble() double
getFloat() float
getInt() int
getLong() long
getObject() Object
getShort() short
getString() java.lang.String
getTime() java.sql.Time
SQL-Java类型对应关系
SQL类型 Java 类型
BIT boolean
TINYINT byte
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
Date java.sql.Date
FLOAT double
DOUBLE double
REAL float
INTEGER int
BIGINT long
SMALLINT short
CHAR java.lang.String
VARCHAR java.lang.String
LONGVARCHAR java.lang.String
执行SQL语句
执行DML语句
执行DDL语句
访问SQL Server数据库
准备SQL Server数据库JDBC驱动程序
从微软网站下载JDBC驱动程序安装文件
本地安装该驱动程序包
重新设置CLASSPATH环境变量
五. JDBC编程进阶
使用属性文件配置运行环境信息
OCI方式访问Oracle数据库
可滚动和可更新结果集
预处理语句
调用存储过程
事务处理
批处理
高级SQL类型BLOB/CLOB
使用属性文件配置运行环境信息
将数据库连接信息(URL、用户名/密码等)保存到专门的属性文件中,而不在程序中直接给出
可滚动/可更新结果集
结果集类型
不可滚动(FORWARD_ONLY)
滚动不敏感(SCROLL_INSENSITIVE)
滚动敏感(SCROLL_SENSITIVE)
结果集并发模式
只读的(READ_ONLY)
可更新的(UPDATABLE)
Connection接口中提供的重载方法createStatement()用于获取可滚动/可更新结果集。
检测结果集类型
结果集类型与并发模式常量
常量含义
ResultSet. TYPE_FORWARD_ONLY 不可滚动结果集
ResultSet. TYPE_SCROLL_INSENSITIVE 滚动不敏感结果集
ResultSet. TYPE_SCROLL_SENSITIVE 滚动敏感结果集
ResultSet. CONCUR_READ_ONLY 只读结果集
ResultSet. CONCUR_UPDATABLE 可更新结果集
使用JDBC元数据API进行检测
使用可滚动结果集
对于可滚动结果集,可以使用ResultSet接口中定义的下述方法进行遍历:
boolean next()
boolean previous()
boolean first()
boolean last()
void beforeFirst()
void afterLast()
boolean relative(int rows)
boolean absolute(int row)
int getRow()
使用可更新结果集
对于可更新结果集,可以使用ResultSet接口中定义的下述方法进行更新操作:
void updateXXX(String columnName, XXX x)
void updateXXX(int columnIndex, XXX x)
void updateRow()
void moveToInsertRow()
void insertRow()
void moveToCurrentRow()
void deleteRow()
void cancelRowUpdates()
预处理语句
java.sql.PreparedStatement接口提供了执行预编译SQL语句的功能,它继承了java.sql.Statement接口。
Connection对象的prepareStatement(String sql)方法可创建并返回PreparedStatement对象。
PreparedStatement接口主要方法:
void setXXX(int parameterIndex, XXX x)
ResultSet executeQuery()
int executeUpdate()
调用存储过程
java.sql.CallableStatement接口提供了调用数据库服务器端存储过程(Procedure)的功能,它继承了java.sql. PreparedStatement接口。
Connection对象的prepareCall(String sql)方法可创建并返回CallableStatement对象。
CallableStatement接口主要方法:
void setXXX(int parameterIndex, XXX x)
boolean execute()
事务处理
和数据库中的事务管理模式相对应,JDBC中的Connection对象也可分为自动提交和非自动提交两种模式。
JDBC驱动程序的默认事务管理模式为"自动提交"。
Connection接口提供的事务处理相关方法:
void setAutoCommit(boolean autoCommit)
boolean getAutoCommit()
void commit()
void rollback()
事务处理之部分回滚
从JDBC3.0开始支持在事务中使用保存点技术,以实现对数据库事务的进一步控制、即支持部分回滚功能。
java.sql.Savepoint接口表示数据库事务中的保存点。
在Connection对象的rollback()方法中可以对当前事务中的保存点进行引用,从而将事务回滚到该保存点。
批处理
JDBC2.0开始提供了对数据库操作的批处理(Batch Processing)功能,使用批处理功能避免了向数据库进行一连串的调用,从而显著提高程序的运行效率。
Statement接口提供的批处理相关方法:
void addBatch(String sql)
int[] executeBatch()
void clearBatch()