1 / 33

数据库访问

☆ WEB 应用开发精品课程. 数据库访问. 长沙民政职业技术学院. 案例导入. 项目 运 用 JDBC 技术 查询所用报名考号信息 任务 1. 实现对数据库各种查询功能; 2. 实现新增,更改,删除等数据库操作。 技术要点 ( 关键字 ) 1.JDBC 连接数据库。 2.JDBC 的增,删,改,查操作的实现。. 目标. 理解 JDBC 标准的概念 掌握 JDBC 标准的核心 API 掌握 JDBC 的 Oracle 实现 掌握用 Statement , PreparedStatement 实现增删改查

aadi
Download Presentation

数据库访问

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ☆WEB应用开发精品课程 数据库访问 长沙民政职业技术学院

  2. 案例导入 • 项目 运用JDBC技术查询所用报名考号信息 • 任务 1.实现对数据库各种查询功能; 2.实现新增,更改,删除等数据库操作。 • 技术要点(关键字) 1.JDBC连接数据库。 2.JDBC的增,删,改,查操作的实现。

  3. 目标 • 理解JDBC标准的概念 • 掌握JDBC标准的核心API • 掌握JDBC的Oracle实现 • 掌握用Statement,PreparedStatement实现增删改查 • 掌握JDBC事务(Transaction)控制 • 了解JDBC的一些优化技巧,包括批处理,设置预取行数等 • 了解JDBC访问CLOB和BLOB对象 • 掌握调用Oracle存储过程

  4. JDBC编程接口简介 • JDBC是进行数据库连接的抽象层 • JDBC支持和ANSI SQL-2标准相容的数据库

  5. JDBC JDBC (Java 数据库连接) Java 应用程序编程接口 Java应用程序 数据库

  6. ODBC ODBC (开放式数据库连接) (Microsoft 提供) 应用程序编程接口 应用程序 数据库

  7. JDBC种类 JDBC种类 JDBC-ODBC桥 Java到网络协议 Java到数据库协议 Java到 本地API

  8. 重要的接口 • java.sql.Connection • java.sql.Statement • java.sql.PreparedStatement • java.sql.CallableStatement • java.sql.ResultSet • java.sql.Driver

  9. 程序访问数据库的步骤 • 加载JDBC驱动的实例或是通过jdbc.drivers系统属性向系统注册一个驱动程序 • 指定数据库 • 打开数据库连接 • 提交数据库查询 • 取得查询结果 • 清除结果集 • 关闭连接

  10. 注册驱动程序 • 加载JDBC驱动程序 • Class.forName(“DriverName”) DriverName为要加载的数据库驱动名称 如:加载JDBC-ODBC数据库驱动程序: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) 如:加载Oracle数据库驱动程序 Class.forName(“oracle.jdbc.driver.OracleDriver”)

  11. 指定数据库 指定URL字符串 jdbc:subprotocol:subname String url="jdbc:oracle:thin:@"+serverName+":1521:"+database; 例:jdbc:oracle:thin:@localhost:1521:ora8

  12. 打开数据库连接 • Connection conn=DriverManager.getConnection(url); • 该方法使用URL字符串作为参数 • 如果能建立连接,则返回一个Connection对象 • Connection对象代表与一个特定数据库的会话过程

  13. Statement • 创建Statement: • Connection.createStatement方法 • 执行INSERT, UPDATE和DELETE • Statement.executeUpdate方法 • 执行SELECT • Statement.executeQuery方法

  14. 取得返回结果 • 查询的结果存放在ResultSet对象的一系列行中 • ResultSet对象的最初位置在行首 • ResultSet.next()方法用来在行间移动 • ResultSet.getXXX()方法用来取得字段的内容

  15. getXXX方法

  16. 使用Prepared Statement • 当需要多次调用同一条SQL语句时,可以使用Prepared Statement • PreparedStatement从Statement继承而来 • setXXX方法 PreparedStatement pstmt = con.prepareStatement( "UPDATE friends SET salary = ? WHERE name like ?"); pstmt.setInt(1, 10000 ); pstmt.setString(2, “李明 "); pstmt.executeUpdate();

  17. 使用Callable Statement • 调用数据库中的Store Procedure时,要用到Callable Statement • CallabelStatement从PreparedStatement继承

  18. SQL与Java数据类型的对应关系

  19. JDBC高级课题 • 可滚动的ResultSet • 可更新的ResultSet • 事务 • 批处理

  20. 可滚动的ResultSet • 要使用可滚动的结果集,必须使用不同于前面所定义的Statement: • Statement stmt = conn.createStatement(type,concurrency); • PreparedStatement stmt = conn.prepareStatement(sql,type,concurrency)

  21. 可滚动的ResultSet(con.)

  22. 可滚动的ResultSet(con.)

  23. 可滚动的结果集(CON.) • 可滚动结果集中的方法: • first • last • beforeFirst • afterLast • isFirst • isLast • isBeforeFirst • isAfterLast • relative • next • previous • absolute

  24. 可更新的结果集 • 可更新的结果集:可以直接通过结果集来更新(insert/update/delete)数据库表 • rs.updateXXX(String name,Xxx value)/rs.updateRow(); • rs.moveToInsertRow()/rs.updateXxx()/rs.insertRow(); • rs.deleteRow(); • rs.cancelRowUpdates();

  25. 事务 • 在JDBC中,事务默认是自动提交的 • 通过Connection的setAutoCommit()方法来设置事务的提交属性 • 通过Connection的getAutoCommit()方法来获得当前事务的提交方式 • 通过Connection的commit()方法来提交事务 • 通过Connection的rollback()方法来回滚事务

  26. 设置事务的提交属性 try { Statement stmt = conn.createStatement(); Statement stmt1 = conn.createStatement(); String strSql,sql,strParameter; conn.setAutoCommit(false); strSql = "delete from File_List where Type_ID='"+request.getParameter("Type_ID")+"'"; stmt.executeUpdate(strSql); sql = "delete from Type_List where Type_ID='"+request.getParameter("Type_ID")+"'"; stmt1.executeUpdate(sql); conn.commit(); stmt1.close(); stmt.close(); conn.close(); response.sendRedirect("OperationSuccess.jsp?msg=删除目录"+request.getParameter("Type_Name")+"成功!&ref=Y&tar=servlet/dbclass.ManagerTree&frame=epost_menu"); }catch(Exception e){ conn.rollback(); response.sendRedirect("OperationFail.jsp?msg=删除目录"+request.getParameter("Type_Name")+"失败!"); } 事务 提交事务 回滚事务

  27. 批处理(Batch) • 可以将一些相关的数据库操作放到同一个Batch中 • 使用Statement的addBatch()方法,将一系列的操作放到同一个Batch中 • 利用Statement的executeBatch()方法,来成批执行放到同一个Batch中的操作 • 可以将Batch操作和事务结合起来使用。将放到 Batch中的操作当成一个事务

  28. Batch(con.) conn.setAutoCommit(false); Statement stmt = conn.createStatement(); stmt.addBatch(“insert into table1…”); stmt.addBatch(“insert into table2…”); stmt.addBatch(“update table3…”); … stmt.executeBatch(); conn.commit() …

  29. 操作BLOB/CLOB数据 • BLOB-Binary Large Object • CLOB-Character Large Object • 通过Statement的setBinaryStream()方法,将二进制大数据保存到数据库 • 通过Statement的getBinaryStream()方法,获得数据库中保存的二进制数据 • 注意: • 1.并非所有数据库都支持大数据 • 2.对于Oracle数据库,要使用JDBC操作BLOB/CLOB,使用oracle10g以上的classes12.zip中的驱动

  30. 获取数据库元数据 • Meta-data:关于数据的数据,在此是有关数据库和数据库表等数据库对象的信息 • 通过Connection的getMetaData()方法获得包含数据库元数据的DatabaseMetaData对象,然后在此对象上调用相关的方法获得对应的信息

  31. DatabaseMetaData相关方法 • getDatabaseProductName() • getDatabaseProductVersion() • getDriverName() • getDriverVersion() • getURL() • getUserName() • getColumnCount() • getColumnName() • … …

  32. 总结 • JDBC访问数据库的步骤 • JDBC标准的核心API,包括DriverManager,Connection,Statement,ResultSet等。 • JDBC的Oracle实现和MySQL实现。 • Statement,PreparedStatement • JDBC事务(Transaction)控制。 • JDBC中批处理,设置预取行数。 • JDBC访问CLOB和BLOB对象 • 调用Oracle存储过程。

More Related