ImageVerifierCode 换一换
格式:DOC , 页数:98 ,大小:1.55MB ,
资源ID:2081381      下载积分:17 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-2081381.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JavaJDBC研习教学教材由浅入深.doc)为本站会员(小**)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

JavaJDBC研习教学教材由浅入深.doc

1、#*目录第一节 整理目的 .3第二节 jdbc 的概念 .32.1 概念 .32.2 Jdbc 与应用程序的关系 .32.3 数据库的连接步骤 .42.4 Quick Start .4第三节 如何与数据库建立连接 .63.1 注册驱动 .63.2 建立数据库的连接 .83.3 规范 Quick Start 中的例子 .10第四节 Statement 接口的使用详解 .124.1 Statement 的常用方法 .124.2 CRUD 操作 .164.3 Statement 有那些缺点 .19第五节 ResultSet 接口的使用详解 .20第六节 JDBC 中数据类型详解 .306.1 基本数

2、据类型 .306.2 日期类型 .346.3 CLOB 类型 .366.4 BLOB 类型 .396.5 其他数据类型 .41第七节 DAO 设计模式详解 .417.1 实际项目中如何使用 JDBC.417.2 DAO 设计模式简介 .427.3 DAO 设计模式的实现 .427.4 DAO 设计模式与工厂模式的整合 .497.5 DAO 设计模式测试 .52第八节 JDBC 对事务的支持 .528.1 模拟转账 .538.2 jdbc 默认事务 .548.3 事务提交与回滚 .548.4 设置保存点 .558.5 JTA 事务的介绍 .568.6 数据库的隔离级别介绍 .568.6.1 未提

3、交读 .578.6.2 提交读 .588.6.3 重复读 .598.6.4 序列化读 .608.7 小结 .62第九节 PreparedStatement 接口的使用 .62第十节 CallableStatement 接口的使用 .62#*9.1 无参无返回值存储过程调用 .639.2 有参无返回值存储过程调用 .639.3 有参有返回值存储过程调用 .649.4 JDBC 其他 API .65第十一节 元数据信息 .6611.1 数据库元数据信息 .6611.2 参数元数据信息 .67第十二节 批处理的使用 .6712.1 普通方式插入一千条数据 .6812.2 批处理方式插入一千条数据 .

4、69第十三节 JDBC 其他 API .7013.1 可滚动结果集 .7013.2 分页技术 .7213.3 可更新结果集 .73第十四节 编写一个简单的数据库连接池 .7414.1 为什么要使用数据库连接池 .7414.2 数据库连接池雏形 .7414.2 数据库连接池优化 .7714.2.1 对线程池加锁 .7714.2.2 连接不够用时抛出异常 .7714.3 数据库连接池之代理模式 .7814.3.1 静态代理 .7814.3.2 动态代理 .8414.4 DBCP 数据库连接池的使用 .87第十五节 jdbc 轻量级封装 .8815.1 将结果集封装为 Map .8815.1.1 R

5、esultSetMetaData 演示 .8815.1.2 解决多行记录的问题 .8915.1.3 Map 结果集的封装 .9015.2 将结果集封装为对象 .9115.2.1 user 表 POJO 的编写 .9115.2.2 Bean 结果集的封装 .9215.3 将结果集封装为 List .9415.4 策略模式的应用 .9615.4.1 Map 结果集策略模式应用 .9615.4.2 Bean 结果集策略模式应用 .9715.4.3 List 结果集策略模式应用 .9815.4.4 单元测试 .9915.5 模板模式的应用 .100第十六节 近期推出 .101#*第一节 整理目的当今

6、orm 等全自动针对对象持久化的框架越来越多并且也越来越成熟(ibatis ,hibernate ,ejb 的 jpa) ,但是无奈新东家需要使用 jdbc(原始手工作坊)的模式和数据库打交道,用了几年的 ibatis,再次使用 jdbc 发现有些细节和底层的东西自己并不是十分清楚,所以就啰理啰嗦的整理出一份学习笔记,第一作为自己对 jdbc 重新的复习,第二如果有可能希望给初学 jdbc 的朋友带来一定的便利,这样也不枉我点点滴滴的记录。随着对 jdbc 整理和学习的逐渐深入,发现原先使用 orm 框架时忽略了那么多的细节,这样在出现问题或者学习 orm 更加深入知识时则会显得力不从心,在本

7、文档将jdbc 如何入门阐述清楚之后,增加了如下的内容: 数据库连接池,以及常用连接池的使用(dbcp,c3p0 等) 编写一套基于 jdbc 轻量级的 api,方便使用; 如何将查询结果封装为对象; 如何将查询结果封装为 Map; 如何将查询结果封装为 List; 如何在 JDBC 的使用中加入策略,模板等模式; 在后面的 JDBC 高级部分将会讲解到 Dbutils 源码,Spring 对 JDBC 的强大封装第二节 jdbc 的概念2.1 概念我最不喜欢替别人整理某个名词的概念了,只要是概念性的东西基本上在任何地方都可以查得到,所以我就通俗的写一些自己对 jdbc 的理解,所谓 jdbc

8、 就是 java 与数据库之间进行通讯的 api,也就是一个标准,所以如果一个 java 应用程序想要和数据库打交道基本上都离不开 jdbc,众所周知,一些优秀的 orm 框架的底层也是采用 jdbc 进行封装的。2.2 Jdbc 与应用程序的关系JdbcAPI 所处的位置和它与应用程序之间的关系,下面的一张图再也明显不过了,其中绿色的部分代表 jdbcAPI,它提供了很多接口,并且本身也实现了很多方法,可以看到蓝色的部分就是各个数据库厂商自己对 jdbcAPI 的一些实现,这就是我们常见的数据库连接驱动,这是使用 jdbc 程序进行开发必不可少的东西。#*2.3 数据库的连接步骤1. 注册驱

9、动 (Driver)2. 建立连接(创建 Connection)3. 创建执行 sql 语句(通常是创建 Statement 或者其子类)4. 执行语句5. 处理执行结果(在非查询语句中,该步骤是可以省略的)6. 释放相关资源在后文中,将会对上述几个步骤一一进行讲解,希望读者能够仔细阅读;2.4 Quick Start好了,了解了一下 jdbc 的基本概念,相比对 jdbc 已经有了一个感性的认识,现在我们为了直观期间,直接来上一段代码了解一下 jdbc 最简单的程序如何进行开发的。在该小节中,我们以一个简单的增删改查为例进行说明,然后会将该章节中涉及的各个常用以及关键的 API 进行详细的讲

10、解;首先我们创建一个数据表,在 test 数据库下,见表语句为create table user(id integer primary key, name varchar(30) ,birthday date,money float);插入两条语句 insert into user values(2,zhangsan,2010-01-01,15000); insert into user values(1,wangwenjun,1984-06-09,8500.00);#*好了,数据准备好了,我们通过一个完整的例子讲上述中数据库的连接步骤进行一个演示,在本例子中,初学者可能有些地方会觉得陌生,看

11、不明白,不用着急,在后文中会对涉及的知识点逐个进行讲解Testpublic void wholeExample()try /1.注册驱动Class.forName(“com.mysql.jdbc.Driver“);/2.获取数据库连接Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test“, “root“,“r66t“);/3.创建执行句柄Statement stmt = conn.createStatement();/4.执行sql 语句ResultSet rs = stmt.execute

12、Query(“select * from user“);/5.处理执行结果while(rs.next()System.out.println(“id:“+rs.getInt(1)+“tname:“+rs.getString(2)+“tbirthday:“+rs.getDate(3)+“tmoney:“+rs.getFloat(4);/6.释放资源rs.close();stmt.close();conn.close(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStac

13、kTrace();执行结果如下id:1 name:wangwenjun birthday:1984-06-09 money:8500.0id:2 name:zhangsan birthday:2010-01-01 money:15000.0第三节 如何与数据库建立连接3.1 注册驱动 第一种注册方式通常来说,注册驱动的方式有三种,下面我们将一一进行介绍,首先来看看直接调用#*DriverManager 的 registerDriver 方法进行加载驱动,在本文中所有的程序均是在 mysql 数据库上进行演示的。示例代码如下Testpublic void registDriver1()try D

14、riverManager.registerDriver(new com.mysql.jdbc.Driver();Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test“, “root“,“r66t“);Assert.assertEquals(false, conn.isClosed(); catch (SQLException e) e.printStackTrace();执行结果为可以看到,当前我们的程序与数据库的连接是正常的。 第二种注册方式Testpublic void registDr

15、iver2()try System.setProperty(“jdbc.drivers“, “com.mysql.jdbc.Driver“);Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test“, “root“,“r66t“);Assert.assertEquals(false, conn.isClosed(); catch (SQLException e) e.printStackTrace();#*执行结果为可以看到,当前我们的程序与数据库的连接是正常的。 第三种注册方式Testpub

16、lic void registDriver3()try Class.forName(“com.mysql.jdbc.Driver“);Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test“, “root“,“r66t“);Assert.assertEquals(false, conn.isClosed(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) / TODO Auto-gene

17、rated catch blocke.printStackTrace();执行结果为#*可以看到,当前我们的程序与数据库的连接是正常的。一般来说注册驱动的方式大致上有上述三个,但是最常用的是最后一个,通过我们的代码演示可以看出,数据库都是完全可以被访问成功的。3.2 建立数据库的连接其实在上文中的代码演示中,我们都会看到如何获取一个数据库连接,就是通过DriverManager.getConnection()方法获取数据库的链接,该方法大致有三个重载的方法,都是可以进行数据库连接的获取的,下面我们将会一一进行演示Static Connection getConnection(String ur

18、l) 试图建立到给定数据库 URL 的连接。static Connection getConnection(String url, Properties info) 试图建立到给定数据库 URL 的连接。static Connection getConnection(String url,String user, String password) 试图建立到给定数据库 URL 的连接。 getConnection(String url)该实例中,登录数据库的所有信息都编写在 url 中,实例代码如下Testpublic void getConn1()try Class.forName(“com

19、.mysql.jdbc.Driver“);Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test?user=rootAssert.assertEquals(false, conn.isClosed(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) #*/ TODO Auto-generated catch blocke.printStackTrace(); getConnection(

20、String url, Properties info)该方法则是将用户名和密码的信息存放在一个 Properties 键值对中,示例代码如下Testpublic void getConn2()try Class.forName(“com.mysql.jdbc.Driver“);Properties props = new Properties();props.put(“user“, “root“);props.put(“password“, “r66t“);Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost

21、:3306/test“,props);Assert.assertEquals(false, conn.isClosed(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); getConnection(String url,String user, String password)该方法则是我们在上文中演示了很多次的方式,也是最常用的一种方式,在这里再次进行一下赘述Testpubli

22、c void getConn3()try Class.forName(“com.mysql.jdbc.Driver“);Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test“, “root“,“r66t“);Assert.assertEquals(false, conn.isClosed(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) / TODO Auto-generated c

23、atch blocke.printStackTrace();#*3.3 规范 Quick Start 中的例子其中,我们在 Quick Start 中写了一个较为完整的代码示例,但是在该代码中存在很多的问题,我们通过本节的介绍,一一进行规范和优化,并且说明一下优化的好处是什么使用数据库时,涉及数据库的资源都是非常奇缺的,我们在使用的过程中务必保证我们将使用过的资源释放,供别人再次使用或者自己下次再次使用,还有,创建数据库连接时可能存在各种各样的问题导致数据库连接获取失败,这个时候你的应用应该有义务告知上一层使用者到底出现了什么问题,这样就需要一个异常传递的过程(异常是一个比较复杂的机制,笔者在

24、另一篇文章中有详细的讲解,希望读者能够关注)Testpublic void regularWhole() throws Exception/抛出异常Connection conn = null;Statement stmt = null;ResultSet rs = null;try /1.注册驱动Class.forName(“com.mysql.jdbc.Driver“);/2.获取数据库连接conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/test“, “root“,“r66t“);/3.创建执行句柄stmt = conn.createStat

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。