清华大学Java课件n.ppt_第1页
清华大学Java课件n.ppt_第2页
清华大学Java课件n.ppt_第3页
清华大学Java课件n.ppt_第4页
清华大学Java课件n.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

数据库访问,client/server,支持多种数据库服务器。 主要的处理逻辑在客户端(胖客户机)。 服务器端的逻辑侧重于数据库的操作。 胖客户机将频繁访问远程数据库,并导致网络流量的增大。,Client,DB Server,SQL,JDBC概述,ODBC(Open DataBase Connectivity) 微软制定的一个C语言与数据库的统一接口 JDBC(Java DataBase Connectivity) 为Java语言定义的一个SQL调用级的统一界面。 为访问关系数据库提供了一个标准的界面。 JDK1.2中已包括了JDBC2.0的内容。,JDBC概述,Java application,JDBC Driver Manager,JDBC API,JDBC Driver (数据库厂家提供),JDBC Driver API,DBMS,数据库连接,每个JDBC应用程序至少要有一个JDBC驱动程序版本,JDBC驱动程序是Driver接口类的实现。 Driver类是驱动程序厂家实现的接口,Driver使DriverManager和JDBC应用程序层可以独立于具体的数据库系统。,应用程序,JDBC,Oracle 驱动程序,Sybase 驱动程序,JDBC API(类),java.sql.DriveManager 负责装载、拆除驱动程序,负责连接驱动程序。 java.sql.Connection 实现对某一数据库的连接功能(建立连接)。 java.sql.Statement 在一个给定的连接中作为执行SQL语句的容器。 java.sql.PreparedStatement 用于执行预编译的SQL声明 java.sql.CallableStatement 用于执行数据库中存储过程的调用 java.sql.ResultSet 保存SQL语句执行结果,数据库连接例(Oracle),将classes111.zip文件的全路径名加入到环境变量CLASSPATH中。 注册(装入)oracle jdbc驱动程序 语法:DriverManager.registerDriver(Driver driver) DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver(); 建立连接(到指定数据库) Connection conn = DriverManager.getConnection (“jdbc:oracle:thin:166.111.7.247:1521:o8i1“, “scott“, “tiger“); 该方法将挑选一个合适的已注册的JDBC驱动程序,数据库连接例,驱动程序: oracle.sql.Driver ,weblogic.sql.Driver 动态加载一个(驱动程序)类 Class c= Class.forName(“weblogic.jdbc.oci.Driver“) 获得Driver类的一个实例: Driver d = (Driver)c.newInstance() 建立一个连接对象(l利用Driver方法) Connection conn = d.connect(String url, Properties info),数据库连接(例),Driver myDriver = (Driver) Class.forName(“weblogic.jdbc.oci.Driver“). newInstance(); Properties props = new Properties(); props.put(“weblogic.codeset“,“GBK“); props.put(“user“,“scott“); props.put(“password“,“tiger“); props.put(“server“,“); Connection conn = myDriver.connect(“jdbc:weblogic:oracle“, props);,执行sql语句Statement类,建立Statement类对象(sql容器) Statement stmt = conn.createStatement(); 查询: ResultSet rs = stmt.executeQuery(“select ename,job from emp“); 修改: int count = stmt.executeUpdate(“update emp set job = CLERK where ename=MARTIN “) INSERT, UPDATE or DELETE (返回行数) DDL 语句(返回0),执行sql语句Statement类,一般语句执行 boolean b = stmt.execute(“select ename,job from emp“); 可执行任何一个SQL语句,可返回多个结果集。 true 第一个结果是ResultSet对象 false 结果为一个整数,或空。 取查询结果: ResultSet rs = stmt.getResultSet(); 取出当前结果集。 int I = stmt.getUpdateCount () 将结果视为更新数,取结果。,执行结果ResultSet类,方法: 移动指针 boolean rs.next() ; 取结果集当前行的数据: getXXX(列序号或列名) String rs.getString(“ename“) ; int rs.getInt (“age”) ; 或 int rs.getInt (2) ; 检查结果集有关信息 ResultsetMetaData rsmd = rs.getMetaData(); 利用ResultsetMetaData的有关方法。,执行sql语句Statement类,取下一查询结果(多结果集) boolean b = stmt. getMoreResults() ; 移动到下一个结果: true 下一结果为ResultSet ,同时关闭当前结果集 false 下一结果为更新数或已无结。 (!getMoreResults() & (getUpdateCount() = -1),访问数据库例,例: Statement stmt = conn.createStatement(); stmt.execute(“select ename,job from emp“); ResultSet rs = stmt.getResultSet(); while (rs.next() System.out.println(rs.getString(“ename“) + rs.getString(“job“) ); stmt.close(); conn.close();,1,PreparedStatement类,予编译(反复执行效率高),带参数 PreparedStatement ps = conn. preparedStatement( “update emp set sal=sal+? where eno=? ”) ; ps.setFloat(1, 210.00) ps.setInt(2, 110592) ps.executeQuery(); ps.execUpdate() ;,CallableStatement类,执行存储过程 CallableStatement cs = conn.prepareCall(“ call 过程名 ” ); cs. executeQuery(); ps.execUpdate() ;,JDBC API 层次,驱动程序管理器,驱动程序,连接,语句,预处理语句,可调用语句,结果集,结果集,结果集,驱动程序层,应用程序层,JDBC应用,java application,DB s

温馨提示

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

评论

0/150

提交评论