Top Banner
JDBC简介 数据库系统与应用 2017321白有辉
23

JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。...

Jun 03, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

JDBC简介

数据库系统与应用

2017年3月21日白有辉

Page 2: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

简介

JDBC是应用程序与数据库沟通的桥梁,即Java

语言通过JDBC技术访问数据库。JDBC是一种

“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC

驱动和JDBC-ODBC桥驱动实现与数据库的连接。

Page 3: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

简介

JDBC(Java DataBase Connectivity)是java数据库连接API。

主要位于JDK中的java.sql包中,扩展的内容位于javax.sql包中

作用: 与一个数据库建立连接

向数据库发送SQL语句

处理数据库返回的结果

Page 4: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

JDBC与ODBC比较

ODBC并不适合在Java中直接使用 ODBC是一个C语言实现的API,从Java程序调用本地的C程序会带来一系列类似安全性、完整性、健壮性的

完全精确实现从C代码ODBC到Java API写的ODBC的翻译并不令人满意,比如指针。

ODBC并不容易学习,它将简单特性和复杂特性混杂在一起,甚至对非常简单的查询都要有复杂的选项。而JDBC相反,保持了简单事物的简单性,又允许复杂的特性。

Java API对纯Java方案来说是必须的 ODBC驱动器和驱动管理器移植

Java写的JDBC驱动适应任何Java平台

JDBC支持两层模型,也支持三层模型访问数据库

Page 5: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

JDBC的数据库访问模型

两层模型

通过JDBC直接与数据库连接

三层模型

通过web服务器端JDBC与

数据库连接

Page 6: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Java数据库访问机制

Java应用程序访问数据库的过程

装载数据库驱动程序

通过JDBC建立数据库连接

访问数据库,执行SQL语句

断开数据库连接

Page 7: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

装载JDBC驱动程序

在Oracle数据库安装文件夹中找到jdbc文件夹→lib文件夹→ojdbc6.jar →导入项目的库中

Page 8: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

装载JDBC驱动程序

Page 9: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

建立与数据库的连接

载入JDBC驱动 Class.forName("oracle.jdbc.driver.OracleDriver");

创建指定数据库的URL:jdbc:subProtocol:subName:@hostname:port:DatabaseName

jdbc表示当前通过Java的数据库连接进行数据库访问

subProtocol表示通过某种驱动程序支持的数据库连接机制

subName表示在当前连接机制下的具体名称

hostname表示主机名

port表示相应的连接端口

DatabaseName表示要连接的数据库的名称

例子:jdbc:oracle:thin:@localhost:1521:orcl(以thin模式访问Oracle)

利用DriverManager 的getConnection方法建立的连接数据库的URL对象 Connection con=java.sql.DriverManager.getConnection(url,user,password)

Page 10: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

测试与数据库的连接

Page 11: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

创建Statement

要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为一下3类: 执行静态SQL语句,通常使用Statement实例

执行动态SQL语句,通常使用PreparedStatement实例

执行数据库存储过程,通常使用CallableStatement实例

具体实现:

Statement stmt = con.createStatement();

PreparedStatement pstmt = con.prepareStatement(sql);

CallableStatement cstmt = conn.prepareCall(sql);

Page 12: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

执行SQL语句

Statement接口提供了executeQuery、executeUpdate

和execute方法

ResultSet executeQuery(String sql):执行查询数据库的SQL语句,返回一个结果集对象;

int executeUpdate(String sql):用于执行insert、update或delete语句以及SQL DDL语句,如create/drop table;

boolean execute(String sql):用于执行返回多个结果集、多个更新计数或者二者组合的语句。

Page 13: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

处理结果

执行更新,返回的是本次操作影响到的记录数。

执行查询,返回的结果是一个结果集ResultSet对

象,其中包含符合条件的所有的行,可以使用它的一套get访问方法获取数据:

While( rs.next() ){

String name = rs.getString(“name”);

String pass = rs.getString(1);//此方法比较高效

Page 14: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

例子

装载连接Oracle的JDBC驱动

Oracle数据库的URL对象

连接数据库

执行SQL查询语句,并输出

Page 15: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

PreparedStatement

JDBC允许在要执行的SQL语句中设置参数,这样就给数据库操作带来很大的方便。

要想使用SQL语句的输入参数和输出参数,必须在PreparedStatement对象上进行操作。

在生成PreparedStatement对象时,在SQL语句中用"?"表明参数。

在执行SQL语句之前,使用setXXX方法给参数赋值,然后使用executeQuery或executeUpdate来执行这个SQL语句。

setXXX方法有两个参数,第一个是要赋值的参数(也就是"?")在SQL语句中的位置,SQL语句中的第一个参数的位置是1,第二个是2,以此类推;setXXX的第二个参数是要替换SQL相应位置占位符的值

Page 16: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

PreparedStatement

Page 17: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

关闭JDBC对象

操作完成后要将所有使用的JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反:

关闭结果集:rs.close();

关闭声明:stmt.close();

关闭连接对象:con.close();

Page 18: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Excel导入Oracle

打开pl/sql,如图所示界面,点击菜单栏中的T00LS ODBC Imtorper,

Page 19: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Excel导入Oracle

在Data fromODBC页中选择需要导入的文件的格式,选择ExcelFiles.输入用户名密码。然后点击Connect

Page 20: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Excel导入Oracle

在弹出的窗口里选择你已整理好的目标excel文件。如果你要把数据导入oracle数据库本已建好的数据表中,建议把excel worksheet中每列的表头改成数据表中对应的字段的名称,这样后面pld可自动帮你匹配数据表的字段和excel表头所对应的列

Page 21: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Excel导入Oracle

如果你要把数据导入一个新建的表中,可点击窗口右上方的“create table”按钮新建一个表把数据导入数据库

Page 22: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Excel导入Oracle

点击确定这时pl会把excel文件中各个worksheet的数据读出来并显示在窗口下方。

Page 23: JDBC简介 - USTCstaff.ustc.edu.cn/~llyue/JDBC.pdf · University of Science and Technology of China 简介 JDBC(Java DataBase Connectivity)是java数 据库连接API。 主要位于JDK中的java.sql包中,扩展的内容位于

University of Science and Technology of China

Thank you!