初篇——目录(JDBC)

目录

建立连接

核心对象

Driver

DriverManager

Connection

DataSource

常用功能

第一个程序

C3P0数据源

DBCP数据源

事务之Spring事务

执行SQL

核心对象

常用功能

批量处理

处理结果集

核心对象

综述

JDBC全称为Java database connectivity,作用是通过Java程序与数据库进行交互,交互过程有三个阶段。

建立连接:java程序与数据库建立连接的方式有两种。

第一种方式通过驱动类(Driver或DriverManager)来建立连接。驱动方式只能建立物理连接,这种方式创建的Connection对象在执行完SQL语句之后无法被复用,每次请求数据库都需要重新建立连接,创建Connection对象。

第二种方式是通过数据源(DataSource)的方式来建立连接。

数据源方式根据数据源的种类决定其建立连接的类型。数据源种类有三种DataSource,PooledDataSource,XADataSource。

DataSource建立的连接为普通连接,创建Connection对象。

PooledDataSource建立的连接支持连接池,,每次请求数据库时,都从连接池中获取Connection对象,请求完成之后,Connection对象被连接池回收。

XADataSource建立的连接支持分布式应用,支持分布式事务,一般分布式应用都支持连接池。

无论哪种方式,建立连接都需要先加载驱动类,java通过接口Driver来表示驱动类,每种类型的数据库都有自己的实现类,例如Oracle数据库的OracleDriver。

执行SQL:执行SQL语句的对象有三种类型

Statement用来执行整段SQL语句,SQL语句中没有参数,每次运行都需要重新编译SQL语句。

PreparedStament继承自statement,SQL语句会预先编译,所以在创建PreparedStatement时,SQL是必要参数。SQL语句可以包含参数占位符”?”,可以根据”?”的位置和其对应的数据类型来传参。它一般用来执行结构不变,而参数值变化的SQL语句。因为有预编译,所以效率比Statement要高。

CallableStatement用来调用数据库中的存储过程,它需要处理如何给存储过程传参,如何接收存储过程的返回值。

SQL的执行过程与事务相关。事务是一组SQL语句执行的序列。事务具有四个特性:

原子性:SQL语句集合执行要么全部成功,要么全部失败。

隔离性:事务彼此之间是无感知的,事务是彼此独立存在的。

一致性:事务执行前后数据保持一致的状态,例如A给B汇款,A账户减少了,B账户对应增加。如果A账户减少了,而B账户没有增加,那么数据就处于不一致的状态。

持久性:事务对数据库操作的修改是永久性的。

       处理结果集:将SQL返回的结果集映射为Java对象。数据库中每个表与一个或者多个java类对应,表的列与java类中的属性相对应(数据类型需要兼容),每一条记录都对应java类的一个实例。在结果集映射的过程中,最关键的是java数据类型与数据库数据类型之间的映射关系。。

结果集可以指定同步方式,遍历方式,关闭方式。

同步方式:结果集与数据库是否同步,亦即结果集的改变同步到数据库当中,数据库的改变同步到结果集当中。ResultSet.CONCUR_UPDATABLE表示结果集时可更新的,这种方式会同步。ResultSet.CONCUR_READONLY表示结果集是只读的,默认的类型为只读类型

遍历方式:结果集支持的遍历类型,ResultSet.TYPE_FORWARD_ONLY表示只能从头到尾遍历。ResultSet.TYPE_SCROLL_SENSITIVE表示遍历顺序可以该变,也可以重复遍历(在一次遍历操作中多次遍历相同数据,类似于视频倒退,重播等操作)。ResultSet.TYPE_SCROLL_INSENSITIVE表示数据库的改变不会同步到结果集当中。

关闭方式:结果集是否随事务提交而关闭,ResultSet.CLOSE_CURSORS_AT_COMMIT 表示会随事务提交而关闭,这种方式是默认方式。ResultSet.HOLD_CUSORS_OVER_COMMIT表示结果集不随事务的提交而关闭。

至此整个交互过程结束,交互结束完成之后需要释放资源,也就是关闭Connection,statement,resultSet等对象。

参考资料

在线文档

Getting Started with the JDBC API   http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html

API:

JDK 1.8 java.sql,javax.sql包等       http://docs.oracle.com/javase/8/docs/api/

时间: 2024-11-03 22:40:25

初篇——目录(JDBC)的相关文章

第15篇-JAVA JDBC编程

第15篇-JAVA JDBC编程 每篇一句 :对于勇敢者,尝试是一条崭新的生活之路 初学心得: 但对于坎坷与泥泞,能以平常之心视之,就非常不容易 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-08| JAVA JDBC编程 ] 1.JDBC概述 通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这是是Java语言的巨大魅力所在 由于Java语言的跨平台特性,所以使用JDBC API所编写的程序不仅可以实现跨数据库,还可以跨平台,具有非常优秀的可移植性

J2EE学习篇之--JDBC详解

今天我们来说一下关于JDBC的相关知识,关于JDBC我想大家都不陌生了,而且我记得早就开始使用它了,记得那是大二的时候做课程设计,但是那时候是为了完成任务,所以遇到问题就google,那时候也没有时间去整理,所以这次就来详细说一下关于JDBC的知识 摘要: JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API. J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.JDBC API.数据库驱动及数据库之间的关系

[转载]JavaEE学习篇之--JDBC详解

原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/26164629 目录1.摘要2.JDBC的使用步骤 1.注册驱动 只做一次 2.建立连接Connection 3.创建执行SQL的语句Statement 4.处理执行结果ResultSet 5.释放资源3.使用JDBC来实现CRUD的操作4.Statement中的sql依赖注入的问题5.JDBC中特殊数据类型的操作问题 1.第一个是日期问题 2.第二个问题就是大文本数据的问

我的博客园初篇 解密 js原型继承

网上的关于原型继承的文章多入牛毛 但是我感觉并不适合新手了解 首先假如这位新手了解过面向对象java啊 c#啊他会理解继承 但是和javascript的继承有有所不同,又假如这位新手初入前端 以前没了解过面向对象 你和他说一大堆术语 更加把他搞得蒙头转向.我在这里尝试用人类认知的模式来解释什么事原型继承以及为什么需要它. 从某种意义来说面向对象的三大特性在我看来是为了“偷懒”(纵观全世界科技发展莫不如此)而由聪明人想出来的法子,在代码世界中,代码的复用也就是多次使用时司空见惯的,比如你一进门就写

【真·新手初篇】菜鸟们都戳进来看看(欢迎大神指导)

作为一只菜鸟,我希望这篇文能帮助到同是新人的你 ———————————————————————————————————————————————————— 首先我必须感谢@CoffeeDeveloper,他的文章给了我行动的勇气,读读他置顶的文章相信对你也会有帮助 如果你想学习HTML,我向你推荐一个网站(部分收费课程),里面有一整套学习教程(虽说那老师的口音...). 视频中提及的一款软件intellji IDEA ,如果有需要的戳这里 .那啥,找提取码就把鼠标移到链接上. 缺少学习和参考的材料

VB6.0编程笔记——(1)篇外篇&目录

从计算机专业毕业到进入IT行业,说来也有些年头了.相比较而言算是幸运,也有很多的同学进入了其他行业,也有一些朋友又想进入这个行业.现在回想自己的一路历程,总结一下,也是一份记忆. 基于以上的原因,希望推出这个系列的文章,能够对想进入这个行业的人员有一定的帮助.内容预计会以循序渐进,学习与实际案例结合的方式,划分不同的掌握程度进行引导,过程中有问题可以多多交流.对于IT行业的大神们,请默默无视~ 入门IT行业,普遍学习的都是C语言或者VB6.0.鉴于C语言的命令行窗口,不一定能引起大家的学习兴趣,

java篇之JDBC原理和使用方法

JDBC学过但又属于很容易忘记的那种,每次要用到,都要看下连接模式.每次找又很费时间,总之好麻烦呀呀呀,所以写篇博客,总结下原理和常用接口,要是又忘了可以直接来博客上看,嘿嘿. 一.什么是JDBC 1.JDBC全称是 Java DataBase Connectivity,可以为多种关系型数据库DBMS提供统一的访问方式,主要目的是用Java来操作数据库. 2.JDBC API主要负责三个功能:(1)与数据库建立连接(2)发送SQL语句给数据库(3)数据库将结果返回 具体过程大致是这样子的: 3.

性能测试构造测试数据--初篇

MySQL mysql构造测试数据分为两种: 1.自己写SQL语句,利用LR等工具进行对数据的插入 2.利用数据库本身的存储过程构造测试数据(单线程执行,服务器端执行减少了网络的消耗) 本篇主要说下第二种方式. 1 BEGIN 2 -- DECLARE 是用来定义变量的 3 DECLARE i INT DEFAULT 1; 4 DECLARE p_sex VARCHAR(10); 5 DECLARE p_course VARCHAR(10); 6 -- WHILE循环,以DO开始,以END WH

“挖掘机”升级路 初篇(02)--详解环境变量PATH,扫除安装Hadoop拦路虎

我在安装Hdoop以及相关套件的时候,最最痛苦的就是$PATH这都是些啥啥啥,看都看不懂,就是照猫画虎也学不像,经常出现很多莫名其妙的错误,煞是打击.于是乎下定决心,看书.FQ.花时间终于弄明白了,最后的理解是告诉这个祖宗Linux去什么地方找我要执行的命令,爷才不输入完整的,爷要随时随地使用,让系统做小弟.上干货!!! 以下引用Google的博客片段,具体谁的我忘了,原谅我! “/bin”.“/sbin”.“/usr/bin”.“/usr/sbin”.“/usr/local/bin”等路径已经