JDBC是什么?
Java Database Connectivity 是一套面向对象的应用程序接口。
是Java程序访问数据库的标准接口。
它制定了统一的访问各类关系数据库的标准接口,为各个数据厂商提供了标准的实现。
它由Java function library,一些类、对象和调用组成;由DBS,也就是JDBC驱动器来实现。Java程序可能和多个不同的数据库进行多个连接,所以需要连接不同的JDBC驱动器。
实际上,一个数据库的JDBC的驱动就是一个jar包,它本身也是纯Java编写的。所有复杂的网络通讯都被封装到JDBC驱动中,因此,Java程序本身只需要引入一个数据库驱动的jar包就可以正常访问数据库服务器。
问题:驱动Driver在JDBC中的角色是什么?
答:驱动是特定的数据库为了适配JDBC,要去实现的一套接口。(JDBC本身没有针对数据库操作提供具体实现)。是一个jar
包。
JDBC怎么用?
通过JDBC,开发人员可以用Java语言和SQL语句编写完整的数据库应用程序。真正实现了软件的跨平台性。
在这个连接关系中,使用的是C/S模型,其中客户机是Java应用程序,服务器是DB服务器。
使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC接口则通过JDBC驱动来实现真正对数据库的访问。
通常使用JDBC来完成以下操作:
- 与数据库建立连接。
- 向数据库发送SQL语句
- 处理从数据库中返回的结果。
优点
- 使开发人员可以专注于业务逻辑开发,不需要编写复杂的驱动程序
- 与ODBC非常相似,便于开发人员理解
- JDBC支持多种关系型的数据库,大大增加了软件的可移植性
- JDBC API是面向对象的,可以将常用方法进行二次封装,提高代码的重用性。
数据类型
有的童鞋可能注意到了,使用JDBC的时候,我们需要在Java数据类型和SQL数据类型之间进行转换。JDBC在java.sql.Types
定义了一组常量来表示如何映射SQL数据类型,但是平时我们使用的类型通常也就以下几种:
SQL数据类型 | Java数据类型 |
---|---|
BIT, BOOL | boolean |
INTEGER | int |
BIGINT | long |
REAL | float |
FLOAT, DOUBLE | double |
CHAR, VARCHAR | String |
DECIMAL | BigDecimal |
DATE | java.sql.Date, LocalDate |
TIME | java.sql.Time, LocalTime |
注意:只有最新的JDBC驱动才支持LocalDate
和LocalTime
。
其他概念
问题:Callable Statement什么时候用?如何准备?
答:CallableStatement用来执行存储过程,存储过程是由数据提供的。准备方法:CallableStatement Connection.prepareCall
问题:数据库连接池是什么意思?
答:数据库连接的建立、关闭,都消耗巨大的资源。传统数据库的访问方式:一次数据访问对应一个物理连接。每次操作数据库都要打开关闭物理连接,系统的性能会很差。因此,要使用连接池:在系统开始运行&#x