jdbc简介 - ustcstaff.ustc.edu.cn/~llyue/jdbc.pdf · university of science and technology of china...

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

Upload: others

Post on 03-Jun-2020

1 views

Category:

Documents


0 download

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!