版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章JDBC访问数据库,2010-03-01,主要内容,1JDBC简介 2基本的JDBC应用 3元数据 4参数化数据库查询和数据库更新 5调用存储过程,1JDBC简介,JDBC(Java Database Connectivity)是Sun公司定义的数据库连接应用编程接口。 JDBC访问数据库使用结构化查询语言SQL。 1.1SQL语言回顾 查询:select 更新:insert、update、delete、create 例:以SQL Server为服务器,查询Pubs数据库中出版社信息。,1.2JDBC的特点 一致API(独立于各种DBMS) 简洁性 健壮性 1.3JDBC的构成 1、JD
2、BC驱动程序管理器 装载特定数据库的驱动程序 初始化、管理驱动 2、驱动程序 任务 建立连接、发送数据请求、结果集和事务处理、错误信息处理等 分类,JDBC驱动分类 JDBC-ODBC桥:通过Microsoft的ODBC访问数据库。 这是Java核心类提供的惟一的JDBC驱动(即第I类驱动),该驱动的Java类名为:sun.jdbc.odbc.JdbcOdbcDriver。 JDBC-Native桥:通过DBMS提供的驱动程序访问。 DBMS必须有支持JDBC连接的JAVA驱动。 JDBC-Network桥:采用中间服务器作为协议转换器,将JDBC的请求格式转化为目标DBMS的请求格式。 纯J
3、DBC驱动:JDBC驱动直接与数据库进行通信(套接字)。 3、数据源 ODBC设置与访问 jdbc:odbc:XXXX 其他数据源 常用数据库JDBC连接写法大全.mht,4、JDBC应用程序 下一小节介绍 JDBC四种组件之间的关系,1.4JDBC API概述 JDBC提供两种编程接口:面向数据库开发人员的接口;面向JDBC驱动程序开发的接口。 面向数据库开发人员的接口 java.sql.DriverManager:加载驱动、建立连接 java.sql.Connection:数据库连接 java.sql.Statement:处理连接中的SQL语句 java.sql.ResultSet:处理结
4、果集 面向JDBC驱动开发的接口 java.sql.Driver:一般由JDBC生产厂商提供。,2基本的JDBC应用,2.1JDBC编程一般步骤 1、装载驱动 2、建立连接(Connection) 3、查询准备(Statement) 4、执行查询或更新 5、处理结果(ResultSet) 6、关闭查询及连接,2.2JDBC编程举例 例:以SQL Server为服务器,查询Pubs数据库中出版社信息。 参考:JDBC_1.rar,DriverManager getConnection(String connStr);创建数据库连接,连接前必须装载相应的驱动 Class.forName(“sun.
5、jdbc.odbc.JdbcOdbcDriver”); 抛出ClassNotFoundException异常 抛出SQLException异常 Connection createStatement();打开一个查询窗口 prepareStatement(String preStr);打开一个带参数的查询窗口 prepareCall(String cs);准备调用存储过程 close();关闭连接,Statement ResultSet executeQuery(String sql);执行返回结果集的查询SQL int executeUpdate(String sql);执行返回影响行数的更新
6、SQL ResultSet XXX getXXX(int col);获取第col列的值,以XXX类型返回,XXX可以是Int、String、Double、Date等 boolean next();移动到结果集的下一行 结果集实际上是用光标指示的,每次光标只指向一条记录,且光标只能向后移动,不能向前移! 最初光标停在-1位置,调用一次next往后加1,关闭 按照从ResultSetStatementConnection的顺序关闭,否则会出现异常! ResultSet若依然有数据遗留,则该ResultSet是激活的;调用close()方法可以关闭结果集,而当调用next()方法到达最后一行(返回值
7、为false)时,结果集会自动关闭! 一个Statement可以有多个ResultSet,但不能同时打开多个激活态的ResultSet,Statement只保留最后一个结果集! 一个Connection可以有多个Statement,但每个时刻只能有一个Statement执行查询或更新SQL! 使用后最好关闭Connection连接,否则将占用过多网络资源(当然在连接池中可以不用关闭)!,课堂练习,练习1:连接SQL Server的Pubs数据库,打印输出作者ID号、作者名字和电话。 提示:操作authors表! 练习2:连接SQL Server的Pubs数据库,打印出雇员的ID号、姓名和雇佣日
8、期,并按雇佣日期的升序排列。 提示:操作employee表!,补充: JDBC直接连接SQL Server,安装Microsoft SQL Server 2000 for JDBC Driver,将msbase.jar、mssqlserver.jar和msutil.jar拷贝到JBuilder的JDK1.4lib目录下。 在Java代码中使用下面字符串连接驱动 com.microsoft.jdbc.sqlserver.SQLServerDriver 使用下面字符串建立连接 jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=myDbNam
9、e 连接时提供相应的用户和密码。 参考:JDBC_2.rar,3元数据,元数据是描述数据的数据。 JDBC提供两类元数据 数据库元数据 描述连接的数据库的库结构信息 结果集元数据 描述产生的结果集(二维表)的结构,3.1DatabaseMetaData接口 功能:获取连接的数据库的库结构信息 获取方法:通过Connection的getMetaData方法获取。 DatabaseMetaData接口方法 public String getDatabaseProductName(); public String getDatabaseProductVersion(); public String
10、getDriverName(); public int getMaxConnections(); public ResultSet getSchemas(); public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String types); 余略(参考JDK帮助文档),举例 连接Pubs数据库,使用元数据接口返回如下数据库信息:DBMS产品名称、DBMS产品版本、JDBC驱动名称、JDBC版本、DBMS连接URL、该数据库所有的对象(表、视图等)。 目标:输出若干数据
11、库元数据信息。 分析:要获取数据库的元数据,必须使用Connection对象的getMetaData()方法,因此必须首先连接数据库! 参考:JDBC_3.rar 补充:关于数据库元数据,可以在JDK中查找,该接口提供方法很多,主要可分为如下几类: 数据库信息(库、用户、权限) 表(数据表、视图、存储过程等) 列(数据类型),3.2ResultSetMetaData 功能:获取结果集的数据定义(列定义)。 获取方法:使用ResultSet对象的getMetaData()方法。 ResultSetMetaData接口主要方法 public int getColumnCount(); public
12、 String getColumnName(int col); public int getColumnType(int col); public String getColumnTypeName(int col); 余略(可参考JDK中相应的文档),举例 返回Pubs数据库所有的出版社信息,要求返回一张二维表,二维表的第一行是表头(罗列所有字段名),第二行开始是数据。 参考JDBC_4.rar 练习 返回Pubs数据库中所有书籍信息和所有作者信息,要求输出格式如“书籍与作者信息表.mht”文件所示。 要求:必须输出两个表格!,4参数化数据库查询和数据库更新,例 往Pubs数据库中的autho
13、rs表插入一条记录,各字段值分别为: 816-00-0001, John, Michael, 865926180054, jmu, xiamen, FJ, 12345, 0 注意:连接字符串的写法! 参考:PSTMT_pre.rar,PreparedStatement接口 继承自Statement接口 在SQL字符串中,使用问号(?)作为参数,在运行时动态加载。如 insert into table1 values(0001,100.234)可以写成:insert into table1 values(?,?),在运行时使用setXXX(int col,Object o)设置相应的参数。 se
14、tXXX(int col,XXX x);设置XXX类型参数 executeQuery();执行查询 例 使用PreparedStatement完成上述例子。 参考:PSTMT.rar,5调用存储过程,SQL存储过程 create/alter procedure 参考:传入参数、传出参数 JDBC对存储过程的支持 使用CallableStatement接口 查询字符串写法:call myProc 传入参数 setXXX();与PreparedStatement相同。 传出参数 registerOutParameter(int parmIndex,int sqlType);,例 创建一个table
15、LineCount的存储过程,如proc1.sql文件所示。然后在JDBC中调用该存储过程,接收存储过程的传出参数。 参考:testProcedure.rar 练习 1、创建SQL存储过程 返回Pubs中某一州(传入参数)作者数量(提示:操作authors表的state字段)。 2、使用JDBC调用该存储过程 调用上述存储过程,分别以“CA”、”OR”为参数调用。,补充:JDBC事务操作,为什么引入事务操作? 事务的原子性、SQL语句。 JDBC提供事务处理的API 在Connection类中实现 使用setAutoCommit(boolean)设置自动提交 commit()提交事务 roll
16、back()回滚事务,例子 在Pubs下创建表transtest(col1 int, col2 char(10),col3 int),并在该表创建索引idx(col1),要求把这两个操作当作一个事务来处理。 参考:TRANS.rar 练习 假设上述transtest表为银行帐户记录,其中col3是帐户余额。现在要求从一个帐户中转帐100到另外一个帐户,试编写处理代码。 提示:记录可自行添加。,补充:连接池,连接池是一个容器,它统一管理连接的建立、销毁等过程。 普通连接:建立连接执行查询关闭连接 不足 每次建立连接需要一定的时间 连接池设计思想 统一管理:连接池提供容器,保存一定数量的连接,并负
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 极端高温中校园热射病急救流程规范
- 急性心梗的急救与护理
- 腹股沟疝术后并发症的预防护理
- 26年基因检测国际援助适配要点
- 胫骨骨折的康复训练政策支持
- 26年数据采集操作指引
- 26年基因检测安宁疗护适配指南
- 老年人照护效果评价方法
- 美容护理工具的跨界合作
- 上海工程技术大学《安全学原理》2025-2026学年第一学期期末试卷(A卷)
- 2026事业单位招聘备考题库(含答案详解)
- 邻里纠纷调解:化解矛盾于微
- 市政管网工程培训课件
- 《简单的加、减法》教案-2025-2026学年人教版(新教材)小学数学二年级下册
- 防性侵教育男生篇课件
- 林业调查规划培训课件
- GB/T 46562-2025能源管理体系多组织共用能源管理体系实施指南
- 成都市人事考试中心2025年下半年招考编外工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年慢性乙型肝炎治疗指南
- 2025年湖北省仙桃市小升初数学试卷(含答案)
- 2025大学党校入党积极分子网络培训考试题库【含答案】
评论
0/150
提交评论