当前位置:文档之家› 《JavaWeb开发》PPT课件

《JavaWeb开发》PPT课件


描述
指定ResultSet对象不能修改数据库
CONCUR_UPDATABLE
指定ResultSet对象可以修改数据库
指定以上两种模式时要求select语句不能带 * 号
特殊记录集
• 可滚动、可更新记录集可以使用的移动记录集指 针的方法
next() 移动到记录集的下一条,没有返回false,否则返回true previous() 移动到前一条记录 first() 移动到第一条记录 last() 移动到最后一条记录 absolute(int rowNumber) 移动到rowNumber指定的行 relative(int relativeRowNumber) 移动到相对于当前纪录位置的某一行
• •
可使用updateXXX方法对指定字段进行更新 使用updateRow()方法将修改发送到数据库
特殊记录集
• 对于可更新结果集使用的查询的限制: 只能使用一个表 必须选择这个表的主键和所有其他NOT NULL列 不能使用ORDER BY子句 必须只选择列值,不能包含计算列 不能使用SELECT *。你必须分别指定列, 或者使用表别名,如
String name = rs.getString(2) ; if( rs.wasNull()) name = "" ; name = name.toUpperCase();
处理异常
1. 当数据库或JDBC驱动程序中发生错误时, 将抛出一个java.sql.SQLException 2. SQLException类是Exception类的子类 3. 必须使用try—catch对该异常进行处理 4. SQLException类定义了2个方法,它们有助 于查找造成异常的原因 getErrorCode() 返回错误编号 getMessage() 返回错误消息

J2EE的商业开发通常会搭配Oracle数据库
//加载oracle驱动程序 Class.forName( "oracle.jdbc.driver.OracleDriver" ); //注册 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver ()); 当一个JDBC驱动程序类被加载时会自动向DriverManager 注册自己, 所以这里可以省略注册的语句:DriverManager.registerDriver(…);
JDBC概述
• JDBC允许大型应用程序把数据写到JDBC 接口上,通过接口与数据库交换信息。因 而编程人员不必太关心与该应用程序一起 使用的是那种数据库
JDBC概述
• 一个完整的JDBC应用由三部分组成 驱动程序
驱动程序管理器 应用程序
JDBC概述
• JDBC的四类驱动 1. JDBC-ODBC桥加ODBC驱动程序
Connection con = DriverManager.getConnection("jdbc:odbc:wish_weas","scott","tiger");

oracle thin 驱动
Connection con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:weas" , "scott" , "tiger" );
基本数据库访问
• java.sql包
接口(类)名
Connection Statement PreparedStatement CallableStatement ResultSet DriverManager Date …… 此接口表示与数据的连接 此接口执行 SQL 语句并将数据检索到 ResultSet 中 此接口执行预编译的 SQL 语句 此接口执行已存储过程 此接口表示了查询出来的数据库数据结果集 此类加载和卸载各种驱动程序并建立与数据库的连接 此类包含将 sql日期格式转换成java日期格式的各种方法 ……
特殊记录集
• 可滚动、可更新记录集
记录集类型
TYPE_FORWARD_ONLY TYPE_SCROLL_SENSITIVE 不可滚动 可滚动,但能看到外部对数据库的修改
描述
TYPE_SCROLL_INSENSITIVE 可滚动,但看不到外部对数据库的修改
记录集并发性
CONCUR_READ_ONLY
记录集对象
• 从数据库emp表中读取员工的编号(empno) 和姓名(ename)
Statement stmt = con.createStatement(); String query = "SELECT empno,ename FROM EMP"; stmt.execute(query); ResultSet rs = stmt.getResultSet();
作业与预习
1. 2. 3. 4. 作业。。。 预习。。。 回顾安排。。。 实验安排。。。
特殊记录集
• 返回结果记录集分为两大类 仅向前、不可更新记录集
Statement stmt = Con.createStatement(); ResultSet rs = stmt.executeQuery("select empno,ename from emp ");
可滚动、可更新记录集
Statement stmt = Con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY ); ResultSet rs = stmt.executeQuery("select empno,ename from emp ");
rs.next(); //当前记录指针移动到下一条记录上
2. 当前记录字段值获取方法 getXXX
String name = rs.getString ("ename"); //通过字段名访问 String name = rs.getString(2); //通过字段位置访问
3. 更新当前字段值的方法 updateXXX
• •
执行INSERT、UPDATE或者DELETE语句
stmt.executeUpdate(query); //query为所要执行的sql语句
执行SELECT语句
ResultSet rs = stmt.executeQuery(query); //rs为记录集对象
记录集对象
• • ResultSet接口来操纵结果集中的记录 ResultSet对象主要提供三大类方法 1. 当前记录指示器移动方法
while(rs.next()) { int i = rs.getInt(1); //得到当前记录的第一个字段(empno)的值 String name = rs.getString(2); //得到第二个字段(ename)的值 System.out.println(Integer.toString(i) + " " + name); }
处理异常
• 捕获并处理SQLException
try { //在 tiger 中多加一个 g con=DriverManager.getConnection( url, "scott", "tigger" ); …… } catch(SQLException e) { if( e.getErrorCode() == 1017 ) { System.out.println("登录用户名/密码错误"); }else{ System.out.println( e.getMessage() ); } }
说明
数据库驱动程序注册
• 加载桥驱动程序并注册
//加载驱动程序类 Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); //注册驱动程序 DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());

oracle oci 驱动
Connection con = DriverManager.getConnection("jdbc:oracle:oci:@weas", "scott", "tiger");
语句对象
• 创建Statement对象
Statement stmt = conn.createStatement();
SELECT customers.* from customers
特殊处理
• 处理数据库中的null值
String name = rs.getString(2); name = name.toUpperCase();
• •
如果name获得的是null值,则第二句调用方法时 出现异常。 ResultSet的wasNull()方法可以检测上一个获取的 字段值是否为空
更多信息
1. JDBC API的主要接口包括Connection、 Statement和ResultSet接口 2. 注册一个驱动,建立起连接对象,在这个 连接对象的基础上执行SQL语句,返回纪 录集,然后利用getXXX方法获得数据。 3. 记录集包括仅向前、不可更新记录集和可 滚动、可更新记录集 4. ResultSet的wasNull方法可以检测数据库字 段的空值。 5. 通过捕获SQLException来处理数据库异常
第三章
JDBC(一)
目标
1. 2. 3. 4. 了解JDBC的四类驱动 理解JDBC的访问方式 掌握基本数据库访问 理解JDBC中异常
相关主题