网络编程在Servlet中使用数据库.ppt_第1页
网络编程在Servlet中使用数据库.ppt_第2页
网络编程在Servlet中使用数据库.ppt_第3页
网络编程在Servlet中使用数据库.ppt_第4页
网络编程在Servlet中使用数据库.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第 6 章,在Servlet中使用数据库,本章要点,利用Servlet访问数据库的编程方法。 JDBC驱动程序的类型 使用JDBC的编程方法 使用JDBC的编程实例,JDBC概述,Java 语言提供了一套访问关系数据库的应用程序编程接口,也就是JDBC API。 JDBC(Java DataBase Connectivity),代表Java 数据库互连,它包含一组Java 语言编写的类和接口,是Java 数据库应用的基础。 在Java 语言中利用JDBC,应用程序就可以用统一的形式访问各种关系数据库。,JDBC的框架结构,JDBC的框架结构说明,在图的顶层,Java 应用程序可以是 小应用程序(Applet), 独立运行的应用程序(Application) 服务器端运行的Severlet EJB 组件 Java 应用程序通过JDBC 接口,经由JDBC 驱动程序管理器、JDBC Driver API 和JDBC驱动程序来访问下层的数据库。,JDBC驱动程序类型,JDBC-ODBC桥:把标准的JDBC调用转换成对应的ODBC调用。 Java到本地API的驱动:利用本地函数库直接与数据库通信。(必须在每台使用该驱动程序的机器上安装和配置),JDBC驱动程序类型,Java到专有网络协议:适于在Internet网上使用。 全Java驱动程序:在数据库服务器内部中通过JDBC 访问数据库的SQL 引擎,进而存取访问数据库。这种方法需要数据库服务器提供对Java 的支持。,JDBC的组成部分,JDBC API包括5个组成部分: 驱动程序管理器(Driver Manager) 连接(Connection) 驱动程序(Driver) 语句(Statement) 结果集(ResultSet),JDBC 中的主要类和接口,JDBC 是由一系列的类和接口组成,其中核心的类和接口包含在java.sql 包中。,DriverManager 类,java.sql.DriverManager 是从Java 的根类Object 派生下来的一个类。 定义了一个向量类(java.util.Vector)的静态对象drivers,用于保存已加载的、可用的数据库驱动程序。 定义的静态方法getConnection 可以用于连接数据库。 另外,该类也可以用于处理数据库登录超时(loginTimeout)和跟踪消息的显示等事情。,java.sql.Driver 接口规定了所有的JDBC 驱动程序必须实现的方法。 当加载或注册一个数据库驱动程序时,实际上是创建数据库驱动程序的一个实例,并在DriverManager 类中的静态Vector 类型变量Drivers 中保存,以便对其进行管理。 作用:保证Java 语言可以使用统一的形式,通过不同的数据库驱动器访问各种数据库。,Driver 接口,Connection接口,java.sql.Connection 是java.sql 包中定义的一个接口,其功能是建立与数据库的连接。与数据库的连接是应用程序存取访问数据库的基础。 在该接口内声明的createStatement 方法是最常用的,其功能是创建一个SQL 语句; 声明的close 方法可以用于关闭与数据库的连接。,Statement 接口,在java.sql.Statement 接口中声明了执行SQL 语句和获取返回结果的方法。 executeUpdate 方法用于执行SQL 的更新语句和数据定义语句,即INSERT、UPDATE、DELETE 语句和CREATE TABLE 语句等; executeQuery 方法用于执行SQL 的查询语句(SELECT 语句)。 getResultSet 方法用于获取返回的结果集(ResultSet)。 close 方法用于关闭statement 接口引用的对象并立即释放该对象占用的资源。,使用JDBC 访问数据库,访问数据库的一般步骤如下: 建立与数据库的连接; 查询处理; 关闭连接。 对于JDBC 数据库应用程序,也基本遵循这个步骤。,JDBC 访问数据库的主要步骤:,加载JDBC 驱动程序,在访问数据库之前,必须将JDBC drivers 驱动程序加载到Java 虚拟机中。加载驱动程序有两种可供选择的办法: 用DriverManager 类的静态方法registerDriver 来加载。 用java.lang.Class 类的forName 方法来加载,直接实例化一个对应于驱动程序的类来完成。,常用数据库JDBC 驱动程序的加载示例,1加载Oracle JDBC 驱动程序 用DriverManager 类的registerDriver 方法来加载,Java 代码如下: DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver(); 加载的驱动程序不存在时,则会出现异常,registerDriver 方法会抛出SQLException 异常,需要进行异常处理。,使用java.lang.Class 类的forName方法加载Oracle JDBC 驱动程序的Java 代码如下: Class c = Class.forName(“Oracle.jdbc.driver.OracleDriver“); 如果要加载的的驱动程序不存在, 该方法可能会抛出ClassNotFoundException 异常,同样需要进行异常处理。,2加载Microsoft SQL Server JDBC 驱动程序 使用DriverManager 类来加载 DriverManager.registerDriver (new com.microsoft.jdbc.sqlserver.SQLServerDriver(); 使用java.lang.Class 类加载 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“); 其中,“com.microsoft.jdbc.sqlserver.SQLServerDriver”是Microsoft SQL Server JDBC 驱动程序的类名。,3加载JDBC-ODBC 桥驱动程序 使用DriverManager 类来加载 DriverManager.registerDriver(new sun.jdbc.JdbcOdbcDriver(); 使用java.lang.Class 类加载Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); 其中,“sun.jdbc.odbc.JdbcOdbcDriver”是数据库驱动程序的类名。,创建数据库连接,装入驱动程序后,建立与数据库连接的语句有: Connection conn = DriverManager.getConnection(数据库URL, User, Password); 其中:数据库的URL,用于定位数据库。 一般格式:jdbc:子协议名:子名称 子协议名:表示数据库驱动程序名或数据库连接机制,例如,Oracle JDBC 驱动程序的子协议都是oracle; 子名称,用于标识要连接的数据库,子名称的结构和内容由各驱动程序开发商规定。,创建数据库连接,与数据库建立连接的另一个方法是调用DriverManager 类的静态方法getConnection(String connect_string)。 代码如下: Connection conn = DriverManager.getConnection(String connect_string); 例:String connURL=“jdbc:odbc:AccessDataSource”; Connection con = DriverManager.getConnection(connURL);,注册的一个数据源,创建SQL 语句对象,与数据库建立连接后,应用程序在此连接上可创建SQL 语句对象,以便执行用户定义的特定SQL 语句。 Connection 中定义了3 种createStatement 方法。 Statement createStatement( ) throws SQLException; Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException; Statement createStatement(int resultSetType, int resultSetConcurrency,int resultSetHoldability) throws SQLException;,创建SQL 语句对象,创建语句如下: Statement stmt = con.createStatement( ); Statement对象有3种不同的类型: 基本的Statement对象:执行一些只执行一次的查询和DDL语句(如Create Table、DropTable操作)。 预备的Statement对象:适用于需要多次执行并且带参数的SQL语句。 执行存储过程的Statement对象:执行存储过程。,执行Statement,基本的SQL 语句可以分成两大类: 数据定义和更新语句 包括CREATE、INSERT、UPDATE 和DELETE 语句。 SELECT 查询语句 对于不同类型的SQL 语句,JDBC 中的Statement 对象提供了执行不同SQL 语句的基本处理方法: executeUpdate 方法用于执行数据定义和更新语句; executeQuery 方法用于执行SELECT 查询语句。,例: 执行查询语句 /创建一个Statement 对象 Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(“SELECT * FROM myTable“); 例:执行数据更新语句(DELETE 语句) /创建一个Statement 对象 Statement stmt = conn.createStatement(); int rowcount = stmt.executeUpdate(“DELETE FROM myTable WHERE Sno = 04160001“);,处理查询结果集,不同的SQL语句返回的结果是不同的。更改语句返回一个整数,查询语句返回一个结果集对象,每个结果集对象都有一个游标(cursor)指向结果集的当前位置,游标的初始位置在第一行。 可以用ResultSet对象的一些方法再对结果集进行操作。(getString()、getInt()等)。 可以用next()方法在记录中移动游标定位结果集中的记录。,利用next()方法和循环语句,可以方便地定位结果集中的记录行。 while (rset.next() String Sno = rset.getString(“Sno“); String Sname = rset.getString(“Sname“); / 处理或显示数据 ,ResultSet 中定位游标的方法及其功能说明,boolean absolute(int row) 将游标移动到ResultSet 中由row 指定的行。 void afterLast() 将游标移动到ResultSet 对象紧靠最后一行之后的位置。 void beforeFirst() 将游标移动到ResultSet 对象紧靠第一行之前的位置。 boolean first() 将游标移动到ResultSet 对象的第一行。 boolean isAfterLast() 判断游标是否在结果集中的最后一行之后。 boolean isBeforeFirst() 判断游标是否在结果集中的第一行之前。,ResultSet 中定位游标的方法及其功能说明,boolean isFirst() 判断游标是否指向结果集中的第一行。 boolean isLast() 判断游标是否指向结果集中的最后一行。 boolean last() 将游标移动到ResultSet 对象的最后一行。 boolean next() 将ResultSet 对象的当前游标从当前位置下移一行。ResultSet 对象的游标初始指向第一行之前的位置,首次调用next()方法则使游标指向第一行。该方法如果使游标成功地指向下一行,则返回true,否则(下一行不存在)返回false。 boolean previous() 将ResultSet 对象的当前游标从当前位置上移一行。,关闭数据库连接,当ResultSet、Statement、Connection对象使用完毕时,都要调用它们的close()方法,释放与其相关的所有资源。不能像一般的Java 对象那样等待Java 虚拟机进行垃圾回收。因为这些对象并不是我们用new出来的对象。,finally if(rset != null) rset.close( ); if(stmt != null) stmt.close( ); if(conn != null) conn.close( ); ,使用JDBC的实例,如何用基本的JDBC API 来访问数据库。 P8791 在Servlet中用JDBC查询一个数据库,将结果返回到客户端并用表格显示。 采

温馨提示

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

最新文档

评论

0/150

提交评论