Java的JDBC编程

1. 数据库编程的必备条件
编程语言,如 Java C C++ Python
数据库,如 Oracle MySQL SQL Server
数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如: MySQL
供了 Java 的驱动包 mysql-connector-java ,需要基于 Java 操作 MySQL 即需要该驱动包。同样的,
要基于 Java 操作 Oracle 数据库则需要 Oracle 的数据库驱动包 ojdbc
2. Java 的数据库编程: JDBC
JDBC ,即 Java Database Connectivity java 数据库连接。是一种用于执行 SQL 语句的 Java API ,它是
Java 中的数据库连接规范。这个 API java.sql.*,javax.sql.* 包中的一些类和接口组成,它为 Java
开发人员操作数据库提供了一个标准的 API ,可以为多种关系数据库提供统一访问。
3. JDBC 工作原理
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问 API 的一种高级抽象,它主要包
含一些通用的接口类。
JDBC 访问数据库层次结构 :
JDBC 优势:
Java 语言访问数据库操作完全面向抽象接口编程
开发数据库应用不用限定在特定数据库厂商的 API
程序的可移植性大大增强 4. JDBC 使用
4.1 JDBC 开发案例
准备数据库驱动包,并添加到项目的依赖中:
在项目中创建文件夹 lib ,并将依赖包 mysql-connector-java-5.1.47.jar 复制到 lib 中。再配置该 jar
包到本项目的依赖中:右键点击项目 Open Module Settings ,在 Modules 中,点击项目,配置
Dependencies ,点击 + JARS or Directories ,将该 lib 文件夹配置进依赖中,表示该文件夹下的
jar 包都引入作为依赖。
建立数据库连接
创建操作命令( Statement
执行 SQL 语句
处理结果集
释放资源(关闭结果集,命令,连接)
// 加载 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 = connection . createStatement ();
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 ();
  } 4.2 JDBC 使用步骤总结
1. 创建数据库连接 Connection
2. 创建操作命令 Statement
3. 使用操作命令来执行 SQL
4. 处理结果集 ResultSet
5. 释放资源
5. JDBC 常用接口和类
5.1 JDBC API
Java JDBC 编程中对数据库的操作均使用 JDK 自带的 API 统一处理,通常与特定数据库的驱动类是完全
解耦的。所以掌握 Java JDBC API (位于 java.sql 包下) 即可掌握 Java 数据库编程。
5.2 数据库连接 Connection
Connection 接口实现类由数据库提供,获取 Connection 对象通常有两种方式:
一种是通过 DriverManager (驱动管理类)的静态方法获取:
一种是通过 DataSource (数据源)对象获取。 实际应用中会使用 DataSource 对象。
以上两种方式的区别是:
}
// 关闭命令
if ( statement != null ) {
    try {
        statement . close ();
  } catch ( SQLException e ) {
        e . printStackTrace ();
  }
}
// 关闭连接命令
if ( connection != null ) {
    try {
        connection . close ();
  } catch ( SQLException e ) {
        e . printStackTrace ();
  }
}
// 加载 JDBC 驱动程序
Class . forName ( "com.mysql.jdbc.Driver" );
// 创建数据库连接
Connection connection = DriverManager . getConnection ( url );
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 连接对象回收。
5.3 Statement 对象
Statement 对象主要是将 SQL 语句发送到数据库中。 JDBC API 中主要提供了三种 Statement 对象。
实际开发中最常用的是 PreparedStatement 对象,以下对其的总结: 主要掌握两种执行 SQL 的方法:
executeQuery() 方法执行后返回单个结果集的,通常用于 select 语句
executeUpdate() 方法返回值是一个整数,指示受影响的行数,通常用于 update insert delete
语句
5.4 ResultSet 对象
ResultSet 对象它被称为结果集,它代表符合 SQL 语句条件的所有行,并且它通过一套 getXXX 方法提供
了对这些行中数据的访问。
ResultSet 里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当
前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用 ResultSet next()
方法 , 如果我们想要得到 ResultSet 里的所有记录,就应该使用 while 循环。
6. 应用案例
技术知识点:
JDBC API CRUD
JDBC API 的事务控制
功能要求:
学生表
自动化 2019 5 班新增一名同学程咬金
修改该同学的班级为中文系 2019 3 查询所有中文系 2019 3 班的同学
删除名叫程咬金的同学
成绩表
新增许仙同学的成绩:英文 80 分, Java65 分,计算机原理 76 分,语文 59
修改许仙同学的成绩:英文 81
删除许仙同学的语文成绩
查询中文系 2019 3 班同学的成绩

你可能感兴趣的:(java,开发语言)