今日学习知识:JDBC(Java数据库连接)
尚学堂官方
2021年04月30日 17:39
收录于文集
共47篇

一、JDBC介绍

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

二、主要用途

  1. 与数据库建立连接

  2. 发送 SQL 语句

  3. 处理结果

三、JDBC概述

1、什么是JDBC 

  • JDBC(Java Data Base Connectivity,  Java数据库连接) 

  • 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问 

  • 它由一组用Java语言编写的类和接口组成

2、有了JDBC,程序员只需用JDBC API写一个程序,就可访问所有数据库。(常用的框架Hibernate、MyBatis底层都是JDBC,都是对JDBC的封装) 

 

 3、 Sun公司、数据库厂商、程序员三方关系

  • SUN公司是规范制定者,制定了规范JDBC(连接数据库规范)(1)DriverManager类   作用:管理各种不同的JDBC驱动(2)Connection接口  (3)Statement接口和PreparedStatement接口    (4)ResultSet接口

  • 数据库厂商微软、甲骨文等分别提供实现JDBC接口的驱动jar包

  • 程序员学习JDBC规范来应用这些jar包里的类。

4、JDBC访问数据库步骤

1:加载一个Driver驱动

2:创建数据库连接(Connection)

3 :创建SQL命令发送器Statement

4:通过Statement发送SQL命令并得到结果

5:处理结果(select语句)

6:关闭数据库资源

  • ResultSet

  • Statement

  • Connection

四、实例:用JDBC完成查询操作

1、ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

2、ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。

3、初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后指向最后一条记录的后面。

4、作为一种好的编程风格,应在不需要Statement对象和Connection对象时显式地关闭它们。关闭Statement对象和Connection对象的语法形式为:

5、用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被自动关闭。

 

示例:是将后台查询到的数据在后台输出。实际开发中应该是客户端向服务器发起请求,服务器端访问数据库得到数据并封装到List中,作为整体传输到前台,并在前台输出。另外可以使用try-with-resources方式来处理异常而省略finally语句中对资源的手动关闭。

 


五、JDBC高级操作

1、JDBC中使用事务

(1)在JDBC中,事务操作缺省是自动提交。

  • 一条对数据库的DML(insert、update、delete)代表一项事务操作

  • 操作成功后,系统将自动调用commit()提交,否则自动调用rollback()回滚

(2)在JDBC中,事务操作方法都位于接口java.sql.Connection中

  • 可以通过调用setAutoCommit(false)来禁止自动提交。

  • 之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整体提交,

  • 倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常;此时就可以在异常捕获时调用rollback()进行回滚,回复至数据初始状态

(3)事务开始的边界则不是那么明显了,它会开始于组成当前事务的所有statement中的第一个被执行的时候。

(4)事务结束的边界是commit或者rollback方法的调用

 

2、连接池

建立数据库连接的两种方式:

(1)传统连接方式:

  • 首先调用Class.forName()方法加载数据库驱动,

  • 然后调用DriverManager.getConnection()方法建立连接.

(2)连接池技术:

  • 连接池解决方案是在应用程序启动时就预先建立多个数据库连接对象,然后将连接对象保存到连接池中。

  • 当客户请求到来时,从池中取出一个连接对象为客户服务。

  • 当请求完成时,客户程序调用close()方法,将连接对象放回池中.

  • 对于多于连接池中连接数的请求,排队等待。

  • 应用程序还可根据连接池中连接的使用率,动态增加或减少池中的连接数。

 

3、传统的数据库连接方式的缺点

  • 一个连接对象对应一个物理连接

  • 每次操作都打开一个物理连接,

  • 使用完都关闭连接,造成系统性能低下。

4、连接池技术的优点

  • 客户程序得到的连接对象是连接池中物理连接的一个句柄

  • 调用连接对象的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接对象和池中的连接对象之间的联系.

5、数据库连接的建立及关闭是耗费系统资源的操作,在大型应用中对系统的性能影响尤为明显。为了能重复利用数据库连接对象,缩短请求的响应时间和提高服务器的性能,支持更多的客户,应采用连接池技术。

 

 

六、JDBC API总结

1、Connection接口

  • 作用:代表数据库连接

2、DriverManager类

  • 作用:管理一组 JDBC 驱动程序的基本服务

  • 应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。

3、Statement接口

  • 作用:用于将 SQL 语句发送到数据库中,或理解为执行sql语句

  • 有三种 Statement对象:

  • Statement:用于执行不带参数的简单SQL语句;

  • PreparedStatement(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;

  • CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用。

4、PreparedStatement接口

  • 关系:public interface PreparedStatement extends Statement

  • 区别(1)PreparedStatment安全性高,可以避免SQL注入(2)PreparedStatment简单不繁琐,不用进行字符串拼接(3)PreparedStatment性能高,用在执行多个相同数据库DML操作时

5、ResultSet接口

  • ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。

  • ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

  • ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。

  • 初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后指向最后一条记录的后面。


给想要学习JDBC:java数据库连接的同学,奉上学习视频!!​