jdbc中的细节
JDBC 架构:
JDBC 的 API 支持两层和三层处理模式进行数据库的访问,但是一般的JDBC架构由两层处理模式组成。
(1)JDBC API:提供了应用程序对 JDBC 管理器的连接
(2)JDBC Driver API:提供了 JDBC 管理器对驱动程序连接
结构图见 jdbc结构图.png

JDBC 的 API 提供了以下接口和类:
DriverManager :这个类管理一系列数据库驱动程序。匹配连接使用通信子协议从 JAVA 应用程序中请求合适的数据库驱动程序。
识别 JDBC 下某个子协议的第一驱动程序将被用于建立数据库连接。
Driver : 这个接口处理与数据库服务器的通信。你将很少直接与驱动程序互动。
相反,你使用 DriverManager 中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息。
Connection : 此接口具有接触数据库的所有方法。该连接对象表示通信上下文,即,所有与数据库的通信仅通过这个连接对象进行。
Statement : 使用创建于这个接口的对象将 SQL 语句提交到数据库。除了执行存储过程以外,一些派生的接口也接受参数。
ResultSet : 在你使用语句对象执行 SQL 查询后,这些对象保存从数据获得的数据。它作为一个迭代器,让您可以通过它的数据来移动。
SQLException : 这个类处理发生在数据库应用程序的任何错误。
创建 JDBC 应用程序的步骤:
1.导入数据包
2.注册 JDBC 驱动器(包括获取驱动,注册驱动(各大厂商已实现))
3.通过驱动管理器获取连接
4.执行查询
5.提取结果数据
6.清理环境
常用的 JDBC 驱动名和数据库 URL:
RDBMS		JDBC 驱动程序名称	URL 				格式
MySQL		com.mysql.jdbc.Driver				jdbc:mysql://hostname/ databaseName
ORACLE		oracle.jdbc.driver.OracleDriver		jdbc:oracle:thin:@hostname:port Number:databaseName
DB2			COM.ibm.db2.jdbc.net.DB2Driver		jdbc:db2:hostname:port Number/databaseName
Sybase		com.sybase.jdbc.SybDriver			jdbc:sybase:Tds:hostname: port Number/databaseName
Statement 对象:
创建了数据库连接,就可以与数据库进行交互。
JDBC 的 Statement,CallableStatement 和 PreparedStatement 接口定义的方法和属性,可以让你发送 SQL 命令或 PL/SQL 命令到数据库,并从你的数据库接收数据。
接口					推荐使用
Statement			可以正常访问数据库,适用于运行静态 SQL 语句。 Statement 接口不接受参数。
PreparedStatement	计划多次使用 SQL 语句, PreparedStatement 接口运行时接受输入的参数。
CallableStatement	适用于当你要访问数据库存储过程的时候, CallableStatement 接口运行时也接受输入的参数。
Java数据类型、JDBC数据类型、Sql数据类型
JDBC驱动程序在将 Java数据类型发送的数据库之前,首先会转换为JDBC类型,然后JDBC类型转换为数据库数据类型。
当通过调用 PreparedStatement 的 setXxx()方法时,Java 数据类型会转换为默认的 Jdbc数据类型。
Java SqlDateTime:
Java Date:	    JanuaryTue Aug 18 13:46:02 GMT+04:00 2009
Sql Date: 	    January 1, 2003
Sql Time:      2:00pm
Sql Timestamp: January 1, 2003 2:00pm
默认情况下,JDBC连接处于自动提交模式。
但是有三个原因你想关掉自动提交模式,管理自己的事务:
为了提高性能
为了保持业务流程的完整性
使用分布式事务
若要使用手动事务模式,使用 Connection 对象的 SetAutoCommit(false) 方法。
提交:conn.commit()。
回滚:conn.rollback()。
回滚还原点:
通过setSavepoint(String savepointName) 来设置一个还原点,通过conn.rollback(savepointName) 来回滚到对应还原点。
删除还原点:
通过 releaseSavepoint(Savepoint savepointName) 来删除一个还原点。
批处理:
将关联的Sql 语句组合成一个批处理,并将它们当成一个调用提交给数据库。减少了通信资源的消耗,提高了性能。
Statement、PreparedStatement、CallableStatement的addBatch() 方法用于添加单个语句(可以是不同的语句)到批处理。
executeBatch() 方法用于启动执行所有组合到一起的语句。返回一个整数数组,数组中每个元素代表了各自的更新语句的更新数目。
批处理和 Statement 对象
使用 createStatement() 方法创建一个 Statement 对象。
使用 setAutoCommit() 方法将自动提交设为 false。
被创建的 Statement 对象可以使用 addBatch() 方法来添加你想要的所有SQL语句。
被创建的 Statement 对象可以用 executeBatch() 将所有的 SQL 语句执行。
最后,使用 commit() 方法提交所有的更改。
批处理和 PrepareStatement 对象
使用占位符创建 SQL 语句。
使用任一 prepareStatement() 方法创建 prepareStatement 对象。
使用 setAutoCommit() 方法将自动提交设为 false。
被创建的 Statement 对象可以使用 addBatch() 方法来添加你想要的所有 SQL 语句。
被创建的 Statement 对象可以用 executeBatch() 将所有的 SQL 语句执行。
最后,使用 commit() 方法提交所有的更改。
jdbc中的细节的更多相关文章
- 转:JDBC中关于PreparedStatement.setObject的一些细节说明
		
原文地址:https://blog.csdn.net/zhiyangxuzs/article/details/78657235 JDBC中PreparedStatement.setObject(ind ...
 - JDBC中的Statement和PreparedStatement的区别
		
JDBC中的Statement和PreparedStatement的区别
 - [转]JDBC中日期时间的处理技巧
		
Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...
 - JDBC中的事务-Transaction
		
事务-Transaction 某些情况下我们希望对数据库的某一操作要么整体成功,要么整体失败,经典的例子就是支付宝提现.例如我们发起了支付宝到银行卡的100元提现申请,我们希望的结果是支付宝余额减少1 ...
 - Oracle数据库编程:在JDBC中应用Oracle
		
9.在JDBC中应用Oracle: JDBC访问数据库基本步骤: 1.加载驱动 2.获取链接对象 3.创建SQL语句 4.提交S ...
 - JDBC中的ResultSet无法多次循环的问题。
		
前几天碰见了一个很奇葩的问题,使我百思不得其解,今天就写一下我遇见的问题吧,也供大家参考,别和我犯同样的毛病. 首先说下jdbc,jdbc是java是一种用于执行SQL语句的Java API,从jdb ...
 - 在JDBC中使用Java8的日期LocalDate、LocalDateTime
		
在实体Entity里面,可以使用java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等字段 但是 ...
 - 使用JDBC中的出现的乱码和查询无结果问题
		
使用JDBC中的问题 连接的后出现查询结果是乱码. 1.可能是代码的编码与数据库的编码不同  有可以将二者都设置为UTF-8 2.如果比较懒得话可以只设代码为UTF-8 mysql 连接url中us ...
 - 一、DAO设计模式 	二、DAO设计模式的优化 	三、JDBC中的事务,连接池的使用
		
一.DAO设计模式概述###<1>概念 DAO,Data Access Object ,用于访问数据库的对象. 位于业务逻辑和数据持久化层之间,实现对数据持久化层的访问 ...
 
随机推荐
- [转] Autofac创建实例的方法总结
			
1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component so tha ...
 - 转:Android开发之旅:环境搭建及HelloWorld
			
http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Andr ...
 - 1.什么是泛型和C#中泛型在Class上的实现
			
阅读目录 一:什么是泛型? 二:C#中泛型在Class上的实现 一:什么是泛型? 我们在编程的时候需要一个数据类型,但是在刚开始的时候还不确定这个数据类型是怎么样的,或者说对于不同的多个数据类型有 ...
 - ORACLE 10g 64位下载地址
			
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip http://download.orac ...
 - [原]shader实现矩形圆角
			
哎!竭力想说清楚这个实现原理,并解释清楚shader里面的算法,结果发现越解释越不好理解,见谅! 一.实现目标:矩形四角是圆弧效果 二.实现的原理:通过每个角绘制1/4圆弧,剔除掉圆弧以外的部分. 原 ...
 - Spring3系列9- Spring AOP——Advice
			
Spring3系列9- Spring AOP——Advice Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统 ...
 - nohup启动java命令导致dubbo无法注册
			
没有任何异常,日志和正常注册日志一模一样,但服务就是没注册成功. 解决办法,screen代替nohup命令. screen screen -ls screen -r pid (ctrl + a)+d
 - android中无限循环滑动的gallery实例
			
android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...
 - Unitils集成DBUnit的问题-解决方案
			
Unitils在集成DBunit时,如果数据库是mysql时,就会出现一些如下: org.unitils.core.UnitilsException: Error inserting test dat ...
 - 如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)
			
使用三方账号登录应用应该对大家来说已经不是什么新鲜事儿了,但是今天为什么还要在这里跟大家聊这个话题呢,原因很简单 Windows Azure Mobiles Service Authenticatio ...