130 likes | 360 Views
JDBC. 2013..4.23. 简介. JDBC ( Java DataBase Connection ) 是应用程序与数据库沟通的桥梁,即 Java 语言通过 JDBC 技术访问数据库。 JDBC 是一种“开放”的方案,它为数据库应用开发人员 ﹑ 数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯 Java 语言编写完整的数据库应用程序。 JDBC 提供两种 API ,分别是面向开发人员的 API 和面向底层的 JDBC 驱动程序 API ,底层主要通过直接的 JDBC 驱动和 JDBC-ODBC 桥驱动实现与数据库的连接。.
E N D
JDBC 2013..4.23
简介 • JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁,即Java语言通过JDBC技术访问数据库。JDBC是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接。
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文件夹→classesl2.jar →导入项目的库中 • 载入JDBC驱动 • Class.forName("oracle.jdbc.driver.OracleDriver"); • 注册JDBC驱动: • java.sql.DriverManager.registerDriver(new 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)
创建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驱动 Oracle数据库的URL对象 执行SQL查询语句,并输出 连接数据库
关闭JDBC对象 • 操作完成后要将所有使用的JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反: • 关闭结果集:rs.close(); • 关闭声明:stmt.close(); • 关闭连接对象:con.close();