Java面向对象程序设计第13章_Jdbc_第1页
Java面向对象程序设计第13章_Jdbc_第2页
Java面向对象程序设计第13章_Jdbc_第3页
Java面向对象程序设计第13章_Jdbc_第4页
Java面向对象程序设计第13章_Jdbc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程Java课堂 手把手教程 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程本次课程主要内容 JDBC技术介绍 JDBC的编程步骤 ResultSet和ResultSet的Cursor(游标) 带参数的SQL语句 JDBC事务控制技术 JDBC中的批处理技术 二进制字段的

2、读写 属性配置文件在数据库连接组件的应用 体验数据库连接池的应用DBCP 编程项目中的各个DAO组件示例 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBCJDBC技术介绍技术介绍1、JDBC(Java DataBase Connectivity): Java语言与SQL语句相互结合且独立于特定的数据库系统的应用程序编程接口(API)。2、ODBC (Open DataBase Connectivity): 依赖微软os平台,导致Java的平台无关性技术特性和面向对象编程的特性都丧失、同时对数据库系统的

3、访问效率也比较低不能满足企业级大数据量的访问要求。3、JDBC作用: (1)JDBC编程接口可以用纯Java语言编写完整的数据库访问的应用程序 (2)在程序中创建与物理数据库的连接 (3)发送标准的SQL语句到指定的关系型数据库系统中,以处理目标数据查询、 修改和增加、删除数据。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBCJDBC编程步骤编程步骤1、基本步骤(1)加载连接数据库的JDBC驱动程序(2)创建与数据库的连接对象, Connection(3)获取发送SQL语句的对象, 比如Statem

4、ent(4)发送SQL语句,对目标数据库中的数据表进行访问 更新 与 查询(查询操作将返回结果集ResultSet)(5)如果返回结果集,那么遍历结果集(6)倒序关闭资源,(ResultSet、Statement、Connection)最基本编程实例如下(注:其中语句随后将被封装到DAO组件当中): JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程11.1.1 计算机组网简介2、程序代码、程序代码 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Jav

5、a系列课程 手把手教程JDBC编程步骤3、程序说明:(1) url格式 :jdbc:database locator- jdbc-指出要使用JDBC技术- subprotocal-定义驱动程序类型- database locator-提供网络数据库的位置和端口号 (包括目标数据库所在的主机名或ip、端口和目标数据库名)- 常用数据库url格式:MySQL :jdbc:mysql:/MyDbComputerNameOrIP:3306/testOracle :jdbc:oracle:thin:MyDbComputerNameOrIP:1521:ORCLSQLServer :jdbc:microso

6、ft:sqlserver:/MyDbComputerNameOrIP:1433;DatabaseName=master JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC编程步骤(2)查询和更新操作- st.executeQuery(): 查询操作,有结果集ResultSet返回- st.executeUpdate():更新操作, 返回值为int型(如果操作的是DML语句,则返回被操作的行数; 如果操作的是DDL语句,则返回0)(3)遍历结果集- 结果集中默认的游标位置在第一条记录的前面,因此遍历结果集

7、时必须要 next,否则出现Before start of result set异常。- 获取一条记录的各个字段值时,可以按字段名获取,也可以按照字段在结果集中的排列序号获取,从1开始。- 通常还会将获取的数据封装在bean对象中 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC编程步骤4、PreparedStatement 应用(1)PreparedStatement 是Statement的子类,有两点不同。- 有预编译的功能- 接受一个或多个动态输入参数,称为 IN 参数(2)IN 参数用? 占位

8、符表示。 PreparedStatement执行之前,必须调PreparedStatement 对象setXXX() 方法来设置 IN 参数,在这里 XXX 被设置的参数的数据类型所替换。按照参数的顺序排序,从1开始。比如: 如果要将第一个 IN 参数设置为100: setInt(1, 100) JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC编程步骤(3)代码片段 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程J

9、DBC编程步骤5、CallableStatement的应用(1)CallableStatement 是PreparedStatement 的子类,因此同样具备预编译和支持动态输入参数的功能,用于调用存储过程。(2)调用方式: call AuthorList 如果过程不需要参数 call AuthorList(?, ?) 如果过程需要两个参数 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程ResultSetResultSet和和ResultSetResultSet的的CursorCursor(游标)(游标)1

10、、ResultSet对象的作用 执行完查询SQL语句后,将返回一个查询结果集,并将该结果集保存在 内存中。2、ResultSet对象中的记录指针 (1)ResultSet对象维持一个指向当前行的指针,利用ResultSet类的 next()方法可以移动到下一行,默认情况下指向第一行的前面。 (2)如果next()的返回值为false,则说明已到记录集的尾部。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程ResultSet和ResultSet的Cursor(游标)3、遍历结果集(1)利用ResultSet类

11、的getXXX()方法可以获得某字段的结 - String getString(String columnName) / 按字段名称获取 - String getString(int columnIndex) /按字段在结果集中的排序序号获取 从1开始(2)代码片段 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程ResultSet和ResultSet的Cursor(游标)4、获得结果集中的一些结构信息 (1)结构信息:提供用来描述列的数量、列的名称、列的数据类型等。 (2)方法:利用ResultSet类的g

12、etMetaData()方法 (3)代码示例如下: JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程5、ResultSet的Cursor(游标)(1)缺省设置 游标只能前进不能后退。 在ResultSet对象或其父类Statement对象关闭之前,光标一直保持有效。(2)在创建Statement或PreparedStatement对象时可以指定ResultSet的游标及允许数据更新两个特性参数 。(3)代码片段 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软

13、件工程系Java系列课程 手把手教程5、ResultSet的Cursor(游标)(4 4)相关方法)相关方法 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程执行带参数的SQL语句1、下面的SQL语句不仅低效,而且还出现SQL注入攻击2、采用下列方式执行带参数的sql语句 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC事务处理技术1、事务的定义:它是对一个数据库访问操作序列(好比多个SQL语句)的控制,这些操作要么

14、全做,要么全不做,是一个不可分割的工作单位。为保证数据的一致性,就必须将这多个操作作为一个事务提交,要么全都执行成功,要么全都不执行否则会造成数据不一致,产生错误。2、事务处理的方式正确:commit()错误:rollback()3、默认JDBC为自动提交事务,如果仅仅执行一条记录操作如增、删、改一条记录,则默认为自动提交事务。否则设置为不自动提交,等所有操作都顺利完成后,一起做为一个事务提交即可。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC事务处理技术1、事务的定义:它是对一个数据库访问操作序

15、列(好比多个SQL语句)的控制,这些操作要么全做,要么全不做,是一个不可分割的工作单位。为保证数据的一致性,就必须将这多个操作作为一个事务提交,要么全都执行成功,要么全都不执行否则会造成数据不一致,产生错误。2、事务处理的方式正确:commit()错误:rollback()3、默认JDBC为自动提交事务,如果仅仅执行一条记录操作如增、删、改一条记录,则默认为自动提交事务。否则设置为不自动提交,等所有操作都顺利完成后,一起做为一个事务提交即可。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC事务处理技

16、术4、代码片段、代码片段 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC批处理技术1、JDBC中的批处理操作技 Statement,PreparedStatement和CallableStatement支持批列表,批列表中可以包含更新、删除或插入的语句,批列表也可以包含DDL语句,例如CREATE TABLE和DROP TABLE。2、用于管理批量操作的命令包括下述几个: (1) addBatch(向批列表添加SQL命令) (2) clearBatch(清空批列表) (3) executeBatch

17、(将列表中的所有语句一次执行) JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程JDBC批处理技术3、插入新行的批处理的代码片段 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程二进制字段的读写1、以流的方式,利用PreparedStatement的setBinaryStream()/getBinaryStream()的 方法插入DB,或从DB获取出InputStream。2、代码片段:将图片添加到数据表中 JAVA V7.

18、0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程二进制字段的读写 查询BLOB字段,并存到aa.gif图片中。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程属性配置文件数据库连接组件中的应用1、涉及Properties 类的用法: (1)Properties prop = new Properties(); (2)InputStream in = PropertiesConfig.getClass().getResourceAsStre

19、am(/perties); (3)prop.load(in); (4)String value=prop.getProperty(key);2、属性文件 perties内容 key=value对。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程属性配置文件数据库连接组件中的应用3、获取属性文件数据的类 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程属性配置文件数据库连接组件中的应用4、通过属性文件

20、连接数据库 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程体验数据库连接池的应用DBCP1、DBCP(DataBase connect pool) 数据库连接池。由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。2、Apache的commons-pool提供了编写对象池的API,将用完的对象返回对象池中以便于下次利用,从而减少了对象创建时间。这对于创建对象相对耗时的应用来说,能够提高应用的

21、性能。 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程体验数据库连接池的应用DBCP3、具体步骤(1)导入包:commons-pool.jar,commons-dbcp.jar,commons-logging.jar(2)构造BasicDataSource对象 BasicDataSource basicDataSource=new BasicDataSource();(3)设置配置参数 basicDataSource.setDriverClassName(driverClassName);basicData

22、Source.setUrl(url);basicDataSource.setUsername(username);basicDataSource.setPassword(password);(4)从连接池中拿到连接和关闭连接 Connection connection= basicDataSource.getConnection(); connection.close();(5)关闭数据源 basicDataSource.close(); JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程体验数据库连接池的应用

23、DBCP4、程序代码、程序代码 JAVA V7.0面向对象程序设计语言信息类课程信息类课程信息工程学院:软件工程系信息工程学院:软件工程系Java系列课程 手把手教程编程过程中的各个DAO组件1、了解数据库访问编程实现的程序结构 (1)连接数据库系统-设计一个连接数据库程序类 (2)访问数据库增、删、改、查DAO(Data Access Object,数据访问对象)类一般采用针对不同的数据库表采用不同的DAO功能实现类。 (3)持久实体类(PO)包装数据库表中的各个记录及其中的各个字段 (4)面向接口编程实现 “两个类之间进行连接,应该要通过接口实现”接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。 针对连接数据库系统提供一个接口,同时也针对不同的DAO组件也提供对应的接口2、实现过程 (1)一个数据库连接的接口 ,抽象出:完成连接数据库的功能、关闭数据库连接功能等功能。 - 代码如下: JAVA V7.0面向对象程序设计语言信息类课程信息类课

温馨提示

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

评论

0/150

提交评论