1.Java的数据库编程:JDBC
JDBC
,即
Java Database Connectivity
,
java
数据库连接。是一种用于执行
SQL
语句的
Java API
,它是 Java中的数据库连接规范。这个
API
由
java.sql.*,javax.sql.*
包中的一些类和接口组成,它为
Java 开发人员操作数据库提供了一个标准的API
,可以为多种关系数据库提供统一访问。
2. JDBC工作原理
JDBC
为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问
API
的一种高级抽象,它主要包 含一些通用的接口类。
JDBC
访问数据库层次结构
:
![](https://img-blog.csdnimg.cn/9fab356a363848ba8713fe50350e568c.png)
JDBC优势:
Java 语言访问数据库操作完全面向抽象接口编程开发数据库应用不用限定在特定数据库厂商的 API程序的可移植性大大增强
3. JDBC使用
JDBC的一般步骤:
引入4JDBC库文件: 首先需要将4JDBC的库文件(jar包)引入到你的项目中,可以通过Maven、Gradle等构建工具进行引入,也可以直接下载jar包手动引入。
配置数据源: 在你的应用程序中配置数据库连接池,包括数据库的连接信息、连接池大小、超时设置等。这通常可以通过在配置文件中进行配置,或者通过代码进行动态配置。
获取连接: 当应用程序需要与数据库交互时,通过4JDBC从连接池中获取数据库连接。这样可以避免频繁地创建和销毁数据库连接,提高了效率。
使用连接进行数据库操作: 获取到数据库连接后,就可以像普通的数据库连接一样使用它进行数据库的增删改查操作。
释放连接: 在使用完数据库连接后,需要将连接归还到连接池中,以便其他的应用程序可以继续重复使用。
3.1 JDBC开发案例
准备数据库驱动包,并添加到项目的依赖中:
在项目中创建文件夹 lib ,并将依赖包 mysql-connector-java-5.1.47.jar 复制到 lib 中。再配置该 jar 包到本项目的依赖中:右键点击项目Open Module Settings ,在 Modules 中,点击项目,配置 Dependencies,点击 + , JARS or Directories ,将该 lib 文件夹配置进依赖中,表示该文件夹下的 jar包都引入作为依赖。
建立数据库连接
// 加载 JDBC 驱动程序:反射,这样调用初始化 com.mysql.jdbc.Driver 类,即将该类加载到 JVM 方法区,并执行该类的静态方法块、静态属性。Class . forName ( "com.mysql.jdbc.Driver" );// 创建数据库连接Connection connection =DriverManager . getConnection ( "jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF-8" )
//MySQL 数据连接的 URL 参数格式如下:jdbc : mysql : // 服务器地址 : 端口 / 数据库名 ? 参数名 = 参数值
创建操作命令(Statement):
Statement statement = connection . createStatement ();
执行SQL语句
ResultSet resultSet = statement . executeQuery ("select id, sn, name, qq_mail, classes_id from student" );
处理结果集
while(resultSet.next()){int id = resultSet . getInt ( "id" );String sn = resultSet . getString ( "sn" );String name = resultSet . getString ( "name" );int classesId = resultSet . getInt ( "classes_id" );System . out . println ( String . format ( "Student: id=%d, sn=%s, name=%s,classesId=%s" , id , sn , name , classesId ));
释放资源(关闭结果集,命令,连接)
// 关闭结果集if ( resultSet != null ) {try {resultSet . close ();} catch ( SQLException e ) {e . printStackTrace ();}}// 关闭命令if ( statement != null ) {try {statement . close ();} catch ( SQLException e ) {e . printStackTrace ();}}// 关闭连接命令if ( connection != null ) {try {connection . close ();} catch ( SQLException e ) {e . printStackTrace ();}}
4.JDBC常用接口和类
4.1 JDBC API
在
Java JDBC
编程中对数据库的操作均使用
JDK
自带的
API
统一处理,通常与特定数据库的驱动类是完全 解耦的。所以掌握Java JDBC API
(位于
java.sql
包下) 即可掌握
Java
数据库编程。
4.2 数据库连接Connection
Connection
接口实现类由数据库提供,获取
Connection
对象通常有两种方式:
一种是通过
DriverManager
(驱动管理类)的静态方法获取:
// 加载 JDBC 驱动程序Class . forName ( "com.mysql.jdbc.Driver" );// 创建数据库连接Connection connection = DriverManager . getConnection ( url );
一种是通过
DataSource
(数据源)对象获取。
实际应用中会使用
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 ();
以上两种方式的区别是:
1. DriverManager
类来获取的
Connection
连接,是无法重复利用的,每次使用完以后释放资源
时,通过
connection.close()
都是关闭物理连接。
2. DataSource
提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接
是可以复用的,每次使用完数据库连接,释放资源调用
connection.close()
都是将
Conncetion
连接对象回收。
4.3 Statement对象
Statement
对象主要是将
SQL
语句发送到数据库中。
JDBC API
中主要提供了三种
Statement
对象。