c数据库连接学习教案_第1页
c数据库连接学习教案_第2页
c数据库连接学习教案_第3页
c数据库连接学习教案_第4页
c数据库连接学习教案_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、Java 数据库连接数据库连接(linji) (JDBC)第第 23 章章第1页/共30页第一页,共31页。回顾(hug) 线程的概念 Java中线程的实现(shxin)方式 共享数据的保护(同步) 线程间通信 “死锁”的概念及预防第2页/共30页第二页,共31页。目标(mbio) JDBC的概念 JDBC的使用(shyng) PreparedStatement 接口 CallableStatement 接口第3页/共30页第三页,共31页。JDBC 概念(ginin) 2-1 JDBC是JDK核心的一部分 由一组用 Java 编程语言编写的类和接口组成 用于执行SQL语句 使数据库开发人员能

2、够(nnggu)用纯Java API 来编写数据库应用程序 基本功能 与数据库建立连接 发送 SQL 语句到数据库 处理返回结果第4页/共30页第四页,共31页。JDBC 概念(ginin) 2-2 特性 易于理解和使用 允许Java用一致(yzh)的方法访问不同类型的数据库 提供多种选择,适应不同需求 屏蔽不同数据库数据类型定义的差异 在类 Java.SQL.Types 中定义了一组通用 SQL 类型标识符 提供 DatabaseMetaData 接口,允许用户检索关于所使用的 DBMS 信息第5页/共30页第五页,共31页。JDBC 驱动程序 JDBC的三个组件 应用程序 驱动程序管理器

3、( DriverManager ) 驱动程序 ( Driver ) JDBC驱动程序的类型 JDBC-ODBC 桥加 ODBC 驱动程序 本地(bnd) API JDBC 网络纯 Java 驱动程序 本地(bnd)协议纯 Java 驱动程序 第6页/共30页第六页,共31页。第一种驱动程序 JDBC-ODBC 桥 优点 JDK 的标准部分 到处都有 ODBC 驱动程序 缺点 中间层次可能会导致性能降低 客户端需要(xyo)安装ODBC,不适合大型网络分布式应用第7页/共30页第七页,共31页。第二种驱动程序 本地 API 优点 数据库客户端好时,会获得高效率 缺点 客户端需要安装合适(hsh)

4、的数据库客户机库程序,不适合大型网络分布式应用第8页/共30页第八页,共31页。第三种驱动程序 JDBC 网络纯 Java 驱动程序 优点 中间层次(cngc)提供了灵活性:可以用相同的代码访问不同的数据库 纯 Java 驱动程序,客户端安装容易,适合大型网络分布应用 缺点 额外的中间层次(cngc)可能有损整体系统性能第9页/共30页第九页,共31页。第四种驱动程序 本地协议纯 Java 驱动程序 优点 直接与数据库进行通讯,性能最佳 纯 Java 驱动程序,客户端安装容易,适合大型(dxng)网络分布应用 缺点 紧密耦合会影响灵活性,特别是如果您需要改变应用程序中的底层数据库时第10页/共

5、30页第十页,共31页。四种(s zhn)驱动使用的差异 不同点 准备工作不同 比如, JDBC-ODBC 桥需要先建立数据源;本地协议纯 Java 驱动程序需要下载jar文件,设置classpath 程序不同 驱动程序名称字符串不同 数据库URL标识(biozh)字符串不同 如果将驱动程序、数据库URL标识(biozh)字符串通过配置文件实现,则程序可以完全相同 除此之外没有区别第11页/共30页第十一页,共31页。JDBC 使用(shyng)步骤 7-1 加载驱动程序 Class.forName 通过名字(mng zi)className加载类 className 因驱动不同而不同 第一种

6、: 第四种举例: try Class.forName(className); catch(ClassNotFoundException e)第12页/共30页第十二页,共31页。JDBC 使用(shyng)步骤 7-2 建立( jinl)数据库连接 数据库 URL标识 jdbc: 第一种举例: jdbc:odbc:dsn_name 第四种举例:jdbc:oracle:thin:zhuxg:1521:oracledb import java.sql.*; / 其他代码 try Connection con = DriverManager.getConnection(“URL”,“登录名”,“口令

7、); catch(SQLException e)第13页/共30页第十三页,共31页。JDBC 使用(shyng)步骤 7-3 创建(chungjin)Statement 对象 Statement 对象负责将 SQL 语句发送到 DBMS Statement sql = con.createStatement();第14页/共30页第十四页,共31页。JDBC 使用(shyng)步骤 7-4 提交 SQL 语句 Statement 对象的方法 int rt = stmt.executeUpdate(sqlString); 用于提交 DDL 、 insert、update和delete 返回值为

8、语句影响行数或0 ResultSet rs = stmt.executeQuery(sqlString); 用于提交 SELECT 返回值为 ResultSet 对象,记录(jl)的集合 boolean b = stmt.execute(sqlString); 用于执行任何 SQL 语句,可能返回多个结果。结果可通过 getResultSet(), getUpdateCount(), getMoreResults() 获得 返回 true 表示第一个返回结果为 ResultSet 第15页/共30页第十五页,共31页。JDBC 使用(shyng)步骤 7-5 处理返回结果 ResultSet

9、使用 next()方法可以顺序查询 结果集将游标最初定位在第一行的前面(qin mian) 第一次调用next()方法使游标移动到第一行 以后每次调用,下移一行 next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false 使用 getXXX 方法检索数据 getInt() 用于检索整型值 getString() 用于检索字符串值 getXXX 方法可按字段名和字段顺序,按字段顺序时不可颠倒顺序,比如先 rs.getInt(5); 再 rs.getString (3);第16页/共30页第十六页,共31页。JDBC 使用(shyng)步骤 7-6 关闭 Statemen

10、t 一个 Statement 对象(duxing)同时只能打开一个 ResultSet 执行完 SQL 语句可以关闭 Statement stmt.close();第17页/共30页第十七页,共31页。JDBC 使用(shyng)步骤 7-7 断开数据库连接 建立连接比较费时 所有数据库操作完成,可以断开连接 Connection con.close(); 一个(y )完整的例子 第18页/共30页第十八页,共31页。Statement 高级(goj)应用 4-1 Statement sql =con.createStatement(type, concurrency); 根据 type, c

11、oncurrency 的取值, stmt返回相应(xingyng)类型的结果集 type的取值 concurrency的取值 第19页/共30页第十九页,共31页。Statement 高级(goj)应用 4-2 结果集只能向前滚动 默认方式 ResultSet 有关方法 next() 结果集可前后滚动 数据库内容变化(binhu)时 ResultSet 内容不变 结果集可前后滚动 数据库内容变化(binhu)时 ResultSet 内容同步改变第20页/共30页第二十页,共31页。Statement 高级(goj)应用 4-3 前后滚动 ResultSet 有关方法 previous();ne

12、xt(); beforeFirst(); afterLast(); first();last(); isAfterLast(); isBeforeFirst(); isFirst();islast(); getRow(); absolute(int row); 注意 行号从1开始 如果取负值,就是倒数(do sh)的行数, absolute(-1);表示移到最后一行 移到最后一行再用getRow()获取行号,就得到总的行数第21页/共30页第二十一页,共31页。Statement 高级(goj)应用 4-4 ResultSet 只能读数据库 ResultSet 能用于更新数据表 ResultS

13、et 的相关方法(fngf) public void updateXXX(String columnName, XXX x) throws SQLException public void updateRow() throws SQLException 例程序 第22页/共30页第二十二页,共31页。高级(goj)查询 使用过滤条件 sql.executeQuery(Select * from Student where Id2); 排序查询 sql.executeQuery(Select * from Student Order By Id); 模糊(m hu)查询 可以用SQL语句操作符L

14、IKE进行模式匹配,使用“%”代替一个或多个字符,用一个下划线“_”代替一个字符。 sql.executeQuery(“Select * from Student Where Name Like 王%);第23页/共30页第二十三页,共31页。更新添加删除(shnch)记录 添加新记录(jl) sql. executeUpdate(“INSERT INTO Student VALUES(33,LiuMing,xcn)”); 删除记录(jl) sql. executeUpdate(“Delete From Student Where Id 2”); 更新记录(jl) sql. executeUp

15、date(“Update Student Set Name= Wang Where Id =2”);第24页/共30页第二十四页,共31页。PreparedStatement接口(ji ku) 2-1 要多次执行一个SQL语句,使用PreparedStatement SQL 语句在创建时提供参数(cnsh) 在执行 PreparedStatement 时,只传递参数(cnsh)值 通过不同的参数(cnsh)值多次调用 PreparedStatement pStmt = conn.preparedStatement( insert into emp (empno , ename) values(

16、?,?); 第25页/共30页第二十五页,共31页。PreparedStatement接口(ji ku) 2-2 在创建 PreparedStatement 对象之后,必须为参数(cnsh)赋值 使用setXXX方法 用 executeUpdate() 方法执行SQL语句 例程序 第26页/共30页第二十六页,共31页。CallableStatement 接口(ji ku) CallableStatement 用于执行 SQL 存储过程CallableStatement cStmt = conn.prepareCall(call showEmployees(?,?); IN参数(cnsh) s

17、etXXX(index,value); OUT参数(cnsh) registerOutParameter(index,Type) getXXX(index); IN OUT参数(cnsh) 设置输入和IN参数(cnsh)相同 也需要象OUT参数(cnsh)一样注册和获取返回值 例程序 第27页/共30页第二十七页,共31页。使用(shyng)套接字客户端程序服务端程序(chngx) JDBC数据库(DBMS)Socket发送(f sn)SQL语句,接收查询结果优点:客户端不需要任何驱动程序第28页/共30页第二十八页,共31页。总结(zngji) JDBC的概念 JDBC的使用(shyng) PreparedStatement 接口 CallableStatement 接口第

温馨提示

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

最新文档

评论

0/150

提交评论