JDBC 简介 数据库系统与应用 2017 年 3 月 21 日 白有辉
简介 JDBC 是应用程序与数据库沟通的桥梁, 即 Java 语言通过 JDBC 技术访问数据库 JDBC 是一种 开放 的方案, 它为数据库应用开发人员 数据库前台工具开发人员提供了一种标准的应用程序设计接口, 使开发人员可以用纯 Java 语言编写完整的数据库应用程序 JDBC 提供两种 API, 分别是面向开发人员的 API 和面向底层的 JDBC 驱动程序 API, 底层主要通过直接的 JDBC 驱动和 JDBC-ODBC 桥驱动实现与数据库的连接
简介 JDBC(Java DataBase Connectivity) 是 java 数据库连接 API 主要位于 JDK 中的 java.sql 包中, 扩展的内容位于 javax.sql 包中 作用 : 与一个数据库建立连接 向数据库发送 SQL 语句 处理数据库返回的结果
JDBC 与 ODBC 比较 ODBC 并不适合在 Java 中直接使用 ODBC 是一个 C 语言实现的 API, 从 Java 程序调用本地的 C 程序会带来一系列类似安全性 完整性 健壮性的 完全精确实现从 C 代码 ODBC 到 Java API 写的 ODBC 的翻译并不令人满意, 比如指针 ODBC 并不容易学习, 它将简单特性和复杂特性混杂在一起, 甚至对非常简单的查询都要有复杂的选项 而 JDBC 相反, 保持了简单事物的简单性, 又允许复杂的特性 Java API 对纯 Java 方案来说是必须的 ODBC 驱动器和驱动管理器移植 Java 写的 JDBC 驱动适应任何 Java 平台 JDBC 支持两层模型, 也支持三层模型访问数据库
JDBC 的数据库访问模型 两层模型 通过 JDBC 直接与数据库连接 三层模型 通过 web 服务器端 JDBC 与数据库连接
Java 数据库访问机制 Java 应用程序访问数据库的过程 装载数据库驱动程序 通过 JDBC 建立数据库连接 访问数据库, 执行 SQL 语句 断开数据库连接
装载 JDBC 驱动程序 在 Oracle 数据库安装文件夹中找到 jdbc 文件夹 lib 文件夹 ojdbc6.jar 导入项目的库中
装载 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
创建 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);
执行 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): 用于执行返回多个结果集 多个更新计数或者二者组合的语句
处理结果 执行更新, 返回的是本次操作影响到的记录数 执行查询, 返回的结果是一个结果集 ResultSet 对象, 其中包含符合条件的所有的行, 可以使用它的一套 get 访问方法获取数据 : While( rs.next() ){ String name = rs.getstring( name ); String pass = rs.getstring(1);// 此方法比较高效 }
例子 装载连接 Oracle 的 JDBC 驱动 执行 SQL 查询语句, 并输出 Oracle 数据库的 URL 对象 连接数据库
PreparedStatement JDBC 允许在要执行的 SQL 语句中设置参数, 这样就给数据库操作带来很大的方便 要想使用 SQL 语句的输入参数和输出参数, 必须在 PreparedStatement 对象上进行操作 在生成 PreparedStatement 对象时, 在 SQL 语句中用 "?" 表明参数 在执行 SQL 语句之前, 使用 setxxx 方法给参数赋值, 然后使用 executequery 或 executeupdate 来执行这个 SQL 语句 setxxx 方法有两个参数, 第一个是要赋值的参数 ( 也就是 "?") 在 SQL 语句中的位置,SQL 语句中的第一个参数的位置是 1, 第二个是 2, 以此类推 ;setxxx 的第二个参数是要替换 SQL 相应位置占位符的值
PreparedStatement University of Science and Technology of China
关闭 JDBC 对象 操作完成后要将所有使用的 JDBC 对象全部关闭, 以释放 JDBC 资源, 关闭顺序和声明顺序相反 : 关闭结果集 :rs.close(); 关闭声明 :stmt.close(); 关闭连接对象 :con.close();
Excel 导入 Oracle 打开 pl/sql, 如图所示界面, 点击菜单栏中的 T00LS ODBC Imtorper,
Excel 导入 Oracle 在 Data fromodbc 页中选择需要导入的文件的格式, 选择 ExcelFiles. 输入用户名密码 然后点击 Connect
Excel 导入 Oracle 在弹出的窗口里选择你已整理好的目标 excel 文件 如果你要把数据导入 oracle 数据库本已建好的数据表中, 建议把 excel worksheet 中每列的表头改成数据表中对应的字段的名称, 这样后面 pld 可自动帮你匹配数据表的字段和 excel 表头所对应的列
Excel 导入 Oracle 如果你要把数据导入一个新建的表中, 可点击窗口右上方的 create table 按钮新建一个表把数据导入数据库
Excel 导入 Oracle 点击确定这时 pl 会把 excel 文件中各个 worksheet 的数据读出来并显示在窗口下方
Thank you! University of Science and Technology of China