Java数据库连接技术JDBC.ppt_第1页
Java数据库连接技术JDBC.ppt_第2页
Java数据库连接技术JDBC.ppt_第3页
Java数据库连接技术JDBC.ppt_第4页
Java数据库连接技术JDBC.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第十二章 JDBC技术,贺玉珍 ,计算机科学与技术系,2,主要内容,JDBC概述 JDBC API的几个基本类和接口 应用JDBC访问数据库,计算机科学与技术系,3,ODBC,12.1 JDBC概述,计算机科学与技术系,Open DataBase Connectivity 开放数据库互连 是微软开发的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API)。 是用C语言实现的,标准应用程序数据接口。 支持异构的DBMS。,4,12.1 JDBC概述,5,12.1 JDBC概述,JDBC(Java DataBase Connectivity),JDBC是为在Java Applet和应用程序中访问关系数据库而设计的API类和接口。 JDBC独立于平台和数据库。 在JDBC规范中,成功地提供了SQL数据库访问的 JAVA方法。 JDBC结构如下图所示:,计算机科学与技术系,6,JDBC应用框架,7,12.1 JDBC概述,12.1.2 JDBC驱动程序的类型,有四种,分别用于不同的场合。,JDBC-ODBC桥接驱动程序 本机应用编程接口部分Java驱动程序 数据库中间件的纯Java驱动程序 直接连接数据库的纯Java驱动程序,计算机科学与技术系,8,JDBC驱动类型,9,12.1.2 JDBC驱动类型,JDBC-ODBC桥接驱动程 序 这种类型的驱动实际是把所有jdbc的调用传递给odbc ,再由odbc调用本地数据库驱动代码 jdbc-odbc桥 - odbc - 厂商DB代码-数据库Server 优点:只要本地机装有相关的odbc驱动,那么采用jdbc-odbc桥几乎可以访问所有的数据库 缺点:执行效率比较低;平台的依赖性。,计算机科学与技术系,10,12.1.2 JDBC驱动类型,本机应用编程接口部分Java驱动程序 直接把jdbc调用转变为数据库的标准调用再去访问数据库。 本地api驱动-厂商DB代码-数据库Server 优点:这种驱动比起jdbc-odbc桥加odbc执行效率大大提高了 缺点:仍然需要在客户端加载数据库厂商提供的代码库。这样就不适合基于internet的应用,计算机科学与技术系,11,12.1.2 JDBC驱动类型,数据库中间件的纯Java驱动程序 使用与具体数据库无关的网络应用通信协议,将java应用程序中对数据库的访问发送给网络上的中间件服务器。中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器 网络协议驱动-中间件服务器-数据库Server 优点:不需要在客户端加载数据库厂商提供的代码库;在执行效率和可升级性方面是比较好的。 缺点:这种驱动在中间件层仍然需要有配置其它数据库驱动程序,并且由于多了一个中间层传递数据,计算机科学与技术系,12,12.1.2 JDBC驱动类型,直接连接数据库的纯Java驱动程序 这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求。由于这种驱动写的应用可以直接和数据库服务器通信,这种类型的驱动完全由java实现,因此实现了平台独立性. 本地协议驱动-数据库Server 优点1:所以它的执行效率是非常高的 优点2:平台独立性 缺点:虽然驱动程序可以动态的被下载,但是对于不同的数据库需要下载不同的驱动程序,计算机科学与技术系,13,12.2 JDBC API,JDBC API的基本功能,建立一个与数据源的连接; 向数据源发出查询和更新语句; 处理得到的结果,计算机科学与技术系,14,12.2 JDBC API,Java中有关JDBC API的类,java.sql包,DriverManager类:驱动程序管理类 Driver接口:数据库驱动程序 Connection接口:到特定数据库的连接 Statement接口:用于执行静态 SQL 语句并返回它所生成结果的对象。 ResultSet接口:数据库结果集的一个数据表,计算机科学与技术系,15,使用JDBC访问数据库,基本上需要以下几个方法和步骤,计算机科学与技术系,装入合适的驱动程序; 创建一个连接对象; 生成一个SQL语句并执行; 处理结果集; 关闭连接。,12.3 基于JDBC的数据库应用开发方法,16,装入驱动程序,计算机科学与技术系,DriverManager类,12.3 基于JDBC的数据库应用开发方法,驱动程序管理类 实现驱动程序的装载,并实现与JDBC数据源的连接。 是JDBC的管理层,工作在用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。 Class.forName(“数据库驱动程序类”);,Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Class.forName(“oracle.jdbc.driver.OracleDriver”); Class.forName(“com.mysql.jdbc.Driver”);,17,Class类,java.lang.Class类 一个普通类,可以提供程序中每个类的信息,如类名、类的父类、接口、类的成员变量、类的构造方法和方法等。 主要方法:,12.3 基于JDBC数据库应用开发方法,public static Class forName (String className) throws ClassNotFoundException; /该方法根据给定的字符串参数返回相应的Class对象。,计算机科学与技术系,18,Class类,主要方法:,12.3 基于JDBC数据库应用开发方法,public boolean isInterface(); public Object newInstance() throws InstantiationException, IllegalAccessException; public Class getInterfaces(); public String getName(); public Class getSuperclass();,计算机科学与技术系,19,建立与数据源的连接。,计算机科学与技术系,JDBC URL,12.3 基于JDBC数据库应用开发方法,JDBC数据源url的标准格式: jdbc:,jdbc:总协议 子协议:驱动程序名或数据库连接机制(可由一个或多个驱动程序支持)的名称。 子名称:指定具体数据库或数据源的连接信息(数据库服务器的IP地址,端口号,ODBC数据源名称,连接用户名/密码等)。,例:jdbc:odbc:bookstore jdbc:dbnet:/wombat:356 jdbc:microsoft:sqlserver:/:1433;DatabaseName=stud,20,建立与数据源的连接。,计算机科学与技术系,建立连接,12.3 基于JDBC数据库应用开发方法,Connection DriverManager.getConnection(url),例: String url = “jdbc:odbc:bookstore”; Connection con = DriverManager.getConnection(url);,21,Connection类,计算机科学与技术系,数据库的连接类。 定义了上下文的行为,在其中发布SQL语句并接收结果 提供的主要方法:,12.3 基于JDBC数据库应用开发方法,createStatement(); /创建Statement 对象来将 SQL 语句发送到数据库。 2) prepareStatement(String query); /创建PreparedStatement 对象来将参数化的 SQL 语句发送到数据库 3) close(); 4) commit(); /事务提交 5) rollback(); /事务回滚,22,创建SQL语句,计算机科学与技术系,Statement类,SQL语句类。 执行SQL语句并获得处理结果。 PrepareStatement类,预编译类。 用于执行预编译的SQL语句。 CallableStatement类,存储过程类。 用于执行对一个数据库存储过程的调用。,12.3 基于JDBC数据库应用开发方法,23,执行SQL语句,计算机科学与技术系,方法executeQuery() 用于产生单个结果集的语句,例如SELECT语句。 方法executeUpdate() 用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,例如CREATE TABLE和DROP TABLE。 方法execute() 用于执行返回多个结果集、多个更新计数或二者组合的语句。,12.3 基于JDBC数据库应用开发方法,24,Statement类,计算机科学与技术系,主要方法:,12.3 基于JDBC数据库应用开发方法,ResultSet executeQuery(String query); int executeUpdate(String query); boolean execute(String query); setMaxRows(int rownum); getMaxRows(); close(); ResultSet getResultSet(); int getUpdateCount(); boolean getMoreResults();,25,Statement类,计算机科学与技术系,示例:,12.3 基于JDBC数据库应用开发方法,Statement stmt = con.createStatement(); String query = “SELECT * FROM books”; ResultSet r = stmt.executeQuery(query);,stmt.executeUpdate(“UPDATE information SET bk_num = 130WHERE name=“袖珍英汉词典“ “);,26,处理结果集,计算机科学与技术系,ResultSet类,12.3 基于JDBC数据库应用开发方法,结果集类 提供对结果集进行处理的方法。 主要方法:,boolean next(); /first();last();previous(); getXxx(String itemname/int num); ResultSetMetaData getMetaData() /检索此 ResultSet 对象的列的编号、类型和名字,27,ResultSet类,计算机科学与技术系,示例:,String query = “SELECT * FROM books”; ResultSet r = stmt.executeQuery(query); /stmt.executeQuery(query); /r=stmt.getResultSet(); while(r.next() String r1 = r.getString(“name“); double r4 = r.getDouble(4); ,12.3 基于JDBC数据库应用开发方法,28,关闭连接,计算机科学与技术系,关闭结果集 关闭Statement对象 关闭连接,12.3 基于JDBC数据库应用开发方法,29,利用JDBC/ODBC桥接驱动程序访问数据库的一般步骤:,计算机科学与技术系,通过ODBC建立访问的数据源,其URL地址为url。 创建驱动程序管理类的对象。常用的方法如下: Class.forName(数据库驱动程序类); 建立与数据源的连接。方法如下: Connection con = DriverManager.getConnection(url);,应用JDBC/ODBC桥访问数据库,创建数据库。 设置系统的ODBC数据源。,30,利用JDBC/ODBC桥接驱动程序访问数据库的一般步骤:,计算机科学与技术系,利用Statement或它的子类对象,实现把SQL语句发送到DBMS。以查询数据库表为例。步骤如下: 对返回的记录集进行处理。 关闭结果集;关闭Statement对象;关闭连接。,应用JDBC/ODBC桥访问数据库,创建Statement对象; 执行SQL语句。 另外,还可获取和设置选项。,31,应用JDBC/ODBC桥访问数据库,计算机科学与技术系,例: 对一个数据库的数据表进行选择、插入、删除、更新记录的操作,对表进行创建和删除操作,32,import java.sql.*; class Query public static void main(String args) try Class t=Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(“SQLException:“+ce.getMessage(); try Connection con = DriverManager.getConnection(“jdbc:odbc:mydb“); Statement stmt = con.createStatement(); ResultSet rs=stmt.executeQuery(“select * from mytable“); while (rs.next() System.out.println( “姓名 “ + rs.getString(“name“) + “t“ + “性别 “ + rs.getString(“sex“) + “t“ + “工资 “ + rs.getFloat(“salary“) ); rs.close(); stmt.close(); con.close() catch (SQLException e) System.out.println(“SQLException:“+e.getMessage(); ,33,import java.sql.*; class Insert public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(“SQLException:“+ce.getMessage(); try Connection con = DriverManager.getConnection(“jdbc:odbc:mydb“,“li“,“1234“); Statement stmt = con.createStatement(); String sqlstr = “insert into mytable values(2001, 邢雪花,女,650)“; stmt.executeUpdate(sqlstr); stmt.executeUpdate(“insert into mytable values(2020,翟建设,男,746)“); stmt.close(); con.close(); catch (SQLException e) System.out.println(“SQLException:“+e.getMessage(); ,34,import java.sql.*; class Delete public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(“SQLException:“+ce.getMessage(); try Connection con = DriverManager.getConnection(“jdbc:odbc:mydb“,“li“,“1234“); Statement stmt = con.createStatement(); String sql = “delete from mytable where name=王五“; stmt.executeUpdate(sql); stmt.close(); con.close(); catch (SQLException e) System.out.println(“SQLException:“+e.getMessage(); ,35,import java.sql.*; class Create public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(“SQLException:“+ce.getMessage(); try Connection con = DriverManager.getConnection(“jdbc:odbc:mydb“,“li“,“1234“); Statement stmt = con.createStatement(); String sql= “create table student (s_num char(4), s_name char(6) null, score int)“; stmt.executeUpdate(sql); sql = “insert into student(s_num, s_name,score) values(9901, 张学军,85)“; stmt.executeUpdate(sql); stmt.close(); con.close(); catch (SQLException e) System.out.println(“SQLException:1 “+e.getMessage(); ,36,import java.sql.*; class Drop public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch (ClassNotFoundException ce) System.out.println(“SQLException:“+ce.getMessage()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论