文章目录
一、jdbc 技术组成
1、jdk 下 jdbc 规范接口, 存储在 java.sql 和 javax.sql 包中的 api
为了项目代码的可移植性、可维护性,SUN 公司从最初就制定了 Java 程序连接各种数据库的统一接口规范。这样的话,不管是连接哪一种 DBMS 软件,Java 代码可以保持一致性。
2、各个数据库厂商提供的驱动 jar 包
因为各个数据库厂商的 DBMS 软件各有不同,那么内部如何通过 sql 实现增、删、改、查等管理数据,只有这个数据库厂商自己最清楚,因此把接口规范的实现交给各个数据库厂商自己实现。
jar 包是什么?
java 程序打成的一种压缩包格式,其实就是把其他的Java程序打成了对应的压缩包就叫 jar包。你可以将这些 jar 包引入你的项目中,然后你可以使用这个 java 程序中类和方法以及属性了!
所以第三方的数据库厂商都会把它们的实现打成一个对应的压缩包,而我们在使用的时候,只需要把这压缩包导入数据库就行了。
二、涉及具体核心类和接口
1)DriverManager
- 将第三方数据库厂商的实现驱动 jar 注册到程序中
- 可以根据数据库连接信息获取 connection,即创建一个连接
2)Connection
- 和数据库建立的连接,在连接对象上,可以多次执行数据库 curd 动作
- 可以获取 statement 和 preparedstatement, callablestatement 对象
3)Statement(查询静态SQL路线(没有动态值语句) | PreparedStatement(预编译SQL路线(有动态值语句) | CallableStatement(执行标准存储过程SQL路线)
- 具体发送 SQL 语句到数据库管理软件的对象
- 不同发送方式稍有不同!preparedstatement 使用为重点!
4)Result
- 面向对象思维的产物 (抽象成数据库的查询结果表)
- 存储 DQL 查询数据库结果的对象
- 需要我们进行解析, 获取具体的数据表数据
PS:只有针对查询语句有Result对象,而其他语句返回的都是一个int类型。
三、JDBC API 使用路线
静态 SQL 路线 (没有动态 SQL 语句)
- DriverManager → Connection → Statement → Result
静态:你的语句中没有任何条件值,例如查询id = 1的数据。
但是往往在开发中,我们的fSQL语句都是非静态的,只要是动态值,就需要使用PreparedStatement,预编译执行。
预编译 SQL 路线 (有动态 SQL 语句)(最常用)
- DriverManager → Connection → PreparedStatement → Result
执行标准存储过程 SQL 路线
- DriverManager → Connection → CallableStatement → Result