JDBC(Java Database Connectivity):java数据库连接,是一种执行SQL语句的
Java API(Application Programming Interface),它是Java中数据库连接规范,这个API由java.sql.*
,javax.sql.*
包中的一些类和接口组成
java.sql.*
:有关客户端连接数据库及数据访问使用
javax.sql.*
:有关服务器端增加服务器功能
JDBC这组API的主要的目的
- 一方面可让java程序设计员,提供单一的数据访问形式,可以有效的访问任何形式的数据,从关系数据库、工作表到一般的文本文件
- 另一方面JDBC使得不同的数据库供应厂商,实现相同的数据库访问方式,使不同的数据来源有了相同的访问方式
数据库编程的必要条件
编程语言,例如:java,c,c++等等
数据库,如:Oracle,Mysql等等
数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包
JDBC主要的功能:
1、与数据库创建连接
2、传送SQL命令给数据库,操作数据库和数据表
3、接收及处理数据库所执行的结果
JDBC有相应的组件类来完成以上的功能
1、利用Connection类来创建数据库连接
2、利用Statement类来传送SQL命令给数据库、操作数据库及操作表
3、利用ResultSet来接收及处理数据库所执行的结果
但是在创建数据库连接之前,我们必须找到合适的Driver
,也就是数据库连接的驱动程序,根据数据库的连接方式,驱动程序有四种类型,驱动程序大部分由数据库厂商进行提供,每一种厂商都有不同类型连接方式。
JDBC使用步骤
1、加载驱动程序(Driver)
2、创建数据库连接(Connection)
3、创建操作命令(Statement)
4、使用操作命令执行SQL
5、处理结果集(Resultset)
6、释放资源
- 2、创建数据库连接(Connection)
Connection接口实现类由数据库提供,获取Connection对象的方式有两种方式:- 一种是通过DriverManager(驱动管理类)的静态方法获取
// 加载JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 创建数据库连接 Connection connection = DriverManager.getConnection(url);
- 一种是Datasource(数据源)对象获取。实际应用中我们会用到数据源
DataSource ds = new MysqlDataSource(); ((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test"); ((MysqlDataSource) ds).setUser("root"); ((MysqlDataSource) ds).setPassword("root"); Connection connection = ds.getConnection();
- 一种是通过DriverManager(驱动管理类)的静态方法获取
我们需要注意的是MysqlDataSource()
没有连接池的能力
这两种方式的区别是:
- DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源时,通过connection.close()都是关闭物理连接。
- DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将Conncetion连接对象回收。
-
3、创建操作命令(Statement)
其实呢,JDBC API 提供了三种Statement对象-
Statement :用于执行不带参数的简单的SQL语句
-
PreparedStatement:
1、用于执行带参数或者不带参数的SQL语句
2、SQL语句会预编译在数据库系统
3、执行速度快于Statement对象 -
CallableStatement:用于执行数据库的存储过程
在实际开发中我们常用的就是PreparedStatement
-
- 5、处理结果集(Resultset)
Resultset是我们执行查询的SQL命令之后,数据库返回查询数据所存储的对象,在Resultset对象中,以一个游标(Cursor)指向目前的记录行,一开始游标是在第一行记录行之前,Resultset对象提供了next方法,可以让我们的游标向下移动指向下一条记录行,当游标移动到没有任何记录后,next方法会返回False,因此我们通常使用while循环来拿到Resultset内所有的内容。