jdbc简介 - ustcstaff.ustc.edu.cn/~llyue/jdbc.pdf · university of science and technology of china...
TRANSCRIPT
JDBC简介
数据库系统与应用
2017年3月21日白有辉
University of Science and Technology of China
简介
JDBC是应用程序与数据库沟通的桥梁,即Java
语言通过JDBC技术访问数据库。JDBC是一种
“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC
驱动和JDBC-ODBC桥驱动实现与数据库的连接。
University of Science and Technology of China
简介
JDBC(Java DataBase Connectivity)是java数据库连接API。
主要位于JDK中的java.sql包中,扩展的内容位于javax.sql包中
作用: 与一个数据库建立连接
向数据库发送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支持两层模型,也支持三层模型访问数据库
University of Science and Technology of China
JDBC的数据库访问模型
两层模型
通过JDBC直接与数据库连接
三层模型
通过web服务器端JDBC与
数据库连接
University of Science and Technology of China
Java数据库访问机制
Java应用程序访问数据库的过程
装载数据库驱动程序
通过JDBC建立数据库连接
访问数据库,执行SQL语句
断开数据库连接
University of Science and Technology of China
装载JDBC驱动程序
在Oracle数据库安装文件夹中找到jdbc文件夹→lib文件夹→ojdbc6.jar →导入项目的库中
University of Science and Technology of China
装载JDBC驱动程序
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)
University of Science and Technology of China
测试与数据库的连接
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);
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):用于执行返回多个结果集、多个更新计数或者二者组合的语句。
University of Science and Technology of China
处理结果
执行更新,返回的是本次操作影响到的记录数。
执行查询,返回的结果是一个结果集ResultSet对
象,其中包含符合条件的所有的行,可以使用它的一套get访问方法获取数据:
While( rs.next() ){
String name = rs.getString(“name”);
String pass = rs.getString(1);//此方法比较高效
}
University of Science and Technology of China
例子
装载连接Oracle的JDBC驱动
Oracle数据库的URL对象
连接数据库
执行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相应位置占位符的值
University of Science and Technology of China
PreparedStatement
University of Science and Technology of China
关闭JDBC对象
操作完成后要将所有使用的JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
关闭结果集:rs.close();
关闭声明:stmt.close();
关闭连接对象:con.close();
University of Science and Technology of China
Excel导入Oracle
打开pl/sql,如图所示界面,点击菜单栏中的T00LS ODBC Imtorper,
University of Science and Technology of China
Excel导入Oracle
在Data fromODBC页中选择需要导入的文件的格式,选择ExcelFiles.输入用户名密码。然后点击Connect
University of Science and Technology of China
Excel导入Oracle
在弹出的窗口里选择你已整理好的目标excel文件。如果你要把数据导入oracle数据库本已建好的数据表中,建议把excel worksheet中每列的表头改成数据表中对应的字段的名称,这样后面pld可自动帮你匹配数据表的字段和excel表头所对应的列
University of Science and Technology of China
Excel导入Oracle
如果你要把数据导入一个新建的表中,可点击窗口右上方的“create table”按钮新建一个表把数据导入数据库
University of Science and Technology of China
Excel导入Oracle
点击确定这时pl会把excel文件中各个worksheet的数据读出来并显示在窗口下方。
University of Science and Technology of China
Thank you!