• Java的JDBC编程


    目录

    一、 Java的数据库编程:JDBC

    二、JDBC工作原理

    三、 JDBC使用

    四、JDBC使用步骤总结

     五. JDBC常用接口和类

    5.1 JDBC API

    5.2 数据库连接Connection

    5.3 Statement对象

    5.4 ResultSet对象


    一、 Java的数据库编程:JDBC

         JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。    

    二、JDBC工作原理

            JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问 API 的一种高级抽象,它主要包 含一些通用的接口类。
    JDBC访问数据库层次结构:
     
    JDBC优势:
    • Java语言访问数据库操作完全面向抽象接口编程
    • 开发数据库应用不用限定在特定数据库厂商的API
    • 程序的可移植性大大增强

    三、 JDBC使用

    • 准备数据库驱动包,并添加到项目的依赖中:

           在项目中创建文件夹lib,并将依赖包mysql-connector-java-5.1.47.jar复制到lib中。再配置该jar 包到本项目的依赖中:右键点击项目Open Module Settings,在Modules中,点击项目,配置 Dependencies,点击+JARS or Directories,将该lib文件夹配置进依赖中,表示该文件夹下的 jar包都引入作为依赖。

    •  建立数据库连接

        MySQL数据连接的URL参数格式如下:
    jdbc:mysql://服务器地址:端口/数据库名?参数名=参数值

    1. // 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法
    2. 区,并执行该类的静态方法块、静态属性。
    3. Class.forName("com.mysql.jdbc.Driver");
    4. // 创建数据库连接
    5. Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
    6. user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
    • 创建操作命令(Statement)
    1. //3.构造一个Sql
    2. String sql =" insert into stu(id,name,age) values(1,zhang,3)";
    3. //需要把 Sql语句转化为对象
    4. PreparedStatement statement = connection.prepareStatement(sql);
    • 使用操作命令来执行SQL
    1. // 查询操作
    2. preparedStatement.executeQuery();
    3. // 新增、修改、删除操作
    4. preparedStatement.executeUpdate();
    • 处理结果集ResultSet.
    1. //接受结果集合
    2. ResultSet resultSet = statement.executeQuery();
    3. //结果集遍历
    4. while (resultSet.next()){
    5. //移动光标
    6. int id = resultSet.getInt("id");
    7. String name = resultSet.getString("name");
    8. int age = resultSet.getInt("age");
    9. System.out.println(id+" "+name+" "+age+" ");
    10. }
    • 释放资源
    1. try {
    2.    if(resultSet != null){
    3.        resultSet.close();
    4.   }
    5.    if(preparedStatement != null){
    6.        preparedStatement.close();
    7.   }
    8.    if(connection != null){
    9.        connection.close();
    10.   }
    11. } catch (SQLException e) {
    12.    e.printStackTrace();
    13.    throw new RuntimeException("数据库错误");
    14. }

    四、JDBC使用步骤总结

    1. 创建数据库连接 Connection
    2. 创建操作命令 Statement
    3. 使用操作命令来执行 SQL
    4. 处理结果集 ResultSet
    5. 释放资源

     五. JDBC常用接口和类

    5.1 JDBC API

            在Java JDBC 编程中对数据库的操作均使用 JDK 自带的 API 统一处理,通常与特定数据库的驱动类是完全 解耦的。所以掌握Java JDBC API (位于 java.sql 包下) 即可掌握 Java 数据库编程。

    5.2 数据库连接Connection

    Connection 接口实现类由数据库提供,获取 Connection 对象通常有两种方式:
    • 一种是通过DriverManager(驱动管理类)的静态方法获取:

    1. // 加载JDBC驱动程序
    2. Class.forName("com.mysql.jdbc.Driver");
    3. // 创建数据库连接
    4. Connection connection = DriverManager.getConnection(url);
    • 一种是通过DataSource(数据源)对象获取。实际应用中会使用DataSource对象
    • 以上两种方式的区别是:
    •     DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源 时,通过connection.close()都是关闭物理连接。
    •     DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接 是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将 Conncetion连接对象回收。

    5.3 Statement对象

    Statement 对象主要是将 SQL 语句发送到数据库中。 JDBC API 中主要提供了三种 Statement 对象

     

    主要掌握两种执行SQL的方法:
    • executeQuery() 方法执行后返回单个结果集的,通常用于select语句
    • executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于updateinsertdelete 语句

    5.4 ResultSet对象

            ResultSet对象它被称为结果集,它代表符合 SQL 语句条件的所有行,并且它通过一套 getXXX 方法提供 了对这些行中数据的访问。
            ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当 前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet next() 方法 , 如果我们想要得到 ResultSet 里的所有记录,就应该使用 while 循环。

     结语:JDBC的相关分享到这里就结束了,希望对大家的学习会有帮助,如果大家有什么问题或者不同的见解,欢迎大家评论区的留言,ganxiezhich~~~

  • 相关阅读:
    汇编观察构成多态与否底层调用的区别
    uniapp中用canvas实现小球碰撞的小动画
    Prolog 中的逻辑探险:学习9组逻辑蕴涵公式
    Kylin ext3/4 xfs手动扩容根分区
    Elastic:使用 Grafana 监视 Elasticsearch
    mac远程连接ubuntu-vnc
    《树莓派4B家庭服务器搭建指南》第二十一期:安装开源远程桌面服务rustdesk, 内网丝滑,外网流畅控制
    【知识网络分析】引文网络(citation)
    LeetCode二叉树OJ
    日志框架学习
  • 原文地址:https://blog.csdn.net/qq_61576108/article/details/134417809