Java JDBC 详解

这篇具有很好参考价值的文章主要介绍了Java JDBC 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

2、Java JDBC 的核心组件有哪些?

3、如何使用JDBC API?

4、DriverManager 和 DataSource 的区别

5、如何使用DataSource进行数据库连接?


        Java JDBC (Java Database Connectivity)是Java语言中用于访问数据库的API。JDBC API提供了一组标准的接口,允许Java应用程序通过使用标准SQL查询语言访问和操作关系型数据库。使用JDBC API,开发人员可以编写可以在各种关系数据库上运行的Java应用程序。

        JDBC API的核心是java.sql包,它包含了一组接口和类,(1)允许开发人员连接到数据库、(2)执行SQL查询和更新、(3)检索结果并管理数据库连接。JDBC驱动程序是用于连接到特定数据库的库,它们实现了JDBC接口,允许开发人员使用JDBC API与不同的数据库交互。

        下面这个简单的代码片段给出了这三个步骤的简单示例:(来自Oracle)

public void connectToAndQueryDatabase(String username, String password) {

    Connection con = DriverManager.getConnection( 
                         "jdbc:myDriver:myDatabase",
                         username,
                         password);

    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");

    while (rs.next()) {
        int x = rs.getInt("a");
        String s = rs.getString("b");
        float f = rs.getFloat("c");
    }
}

2、Java JDBC 的核心组件有哪些?

        Java JDBC 的核心组件包括以下几个:

        (1)DriverManager:是一个用于管理 JDBC 驱动程序的基础服务。它负责加载并注册 JDBC 驱动程序,并提供了一种方法来建立数据库连接

        (2)Connection:表示与数据库的连接,它提供了一组方法来管理数据库事务、提交更改、回滚事务以及创建 Statement、PreparedStatement 和 CallableStatement 对象。

        (3)Statement:表示一个简单的 SQL 语句,并提供了一组方法来执行 SQL 查询和更新,并返回结果集

  • PreparedStatement:继承自 Statement 接口,可以更有效地执行参数化 SQL 语句,它允许使用占位符来指定参数,并将参数值绑定到占位符上。
  • CallableStatement:继承自 PreparedStatement 接口,用于执行存储过程,它提供了一种方法来调用数据库中的存储过程,并可以接收存储过程的输出参数。

        (4)ResultSet:表示 SQL 查询返回的结果集,它提供了一组方法来检索查询结果,并可以移动指针来访问结果集中的每一行。

        以上这些核心组件是 Java JDBC 编程中最常用的部分,使用它们可以完成对数据库的连接、查询、更新和事务管理等基本操作。

// 可以发现上述组件基本上是一环套一环,Manager加载和注册驱动,然后创建Connection,然后由Connection创建Statement,并由Statement产生结果集。

3、如何使用JDBC API?

        使用JDBC API的基本步骤包括:

  1. 加载适当的JDBC驱动程序
  2. 建立到数据库的连接
  3. 创建一个Statement对象,用于执行SQL查询或更新
  4. 执行SQL查询或更新
  5. 处理查询结果或更新的结果
  6. 关闭连接和相关对象

        下面是一个使用Java JDBC建立数据库连接并执行查询的示例代码:

import java.sql.*;

public class JdbcExample {
   // JDBC driver名称和数据库URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
   static final String DB_URL = "jdbc:mysql://localhost/test";

   // 数据库用户和密码
   static final String USER = "root";
   static final String PASS = "password";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         // 注册 JDBC 驱动
         Class.forName(JDBC_DRIVER);

         // 建立数据库连接
         conn = DriverManager.getConnection(DB_URL, USER, PASS);

         // 执行查询
         stmt = conn.createStatement();
         String sql = "SELECT id, name, age FROM employees";
         ResultSet rs = stmt.executeQuery(sql);

         // 处理结果集
         while(rs.next()){
            // 通过列名获取数据
            int id  = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");

            // 输出结果
            System.out.print("ID: " + id);
            System.out.print(", Name: " + name);
            System.out.println(", Age: " + age);
         }
         // 关闭结果集、语句和连接
         rs.close();
         stmt.close();
         conn.close();
      } catch(SQLException se){
         // 处理 JDBC 错误
         se.printStackTrace();
      } catch(Exception e){
         // 处理 Class.forName 错误
         e.printStackTrace();
      } finally{
         // 关闭资源
         try{
            if(stmt!=null) stmt.close();
         } catch(SQLException se2){
         } try{
            if(conn!=null) conn.close();
         } catch(SQLException se){
            se.printStackTrace();
         }
      }
   }
}

        上述代码首先通过 Class.forName() 方法加载 JDBC 驱动程序,然后使用 DriverManager.getConnection() 方法建立数据库连接。接着使用 Connection.createStatement() 方法创建一个 Statement 对象,用于执行 SQL 查询,使用 Statement.executeQuery() 方法执行查询并获取结果集,最后通过 ResultSet 对象处理结果集。

        在代码的末尾,使用 ResultSet.close()Statement.close()Connection.close() 方法分别关闭结果集、语句和连接。同时,使用 try-catch-finally 块来处理异常和关闭资源。

        请注意,上述代码中的数据库连接字符串和数据库用户和密码应该替换为您自己的值。

4、DriverManager 和 DataSource 的区别

        在Java JDBC中,DriverManager和DataSource都是用于建立数据库连接的组件,但它们有以下区别:

        (1)DriverManager是一个基础服务,DataSource是一个高级服务。

        DriverManager(java.sql)是JDBC API的核心服务之一,它负责加载并注册JDBC驱动程序,并提供了一种方法来建立数据库连接。而DataSource(javax.sql)是一种更高级别的数据库连接管理器,它提供了更多的功能和配置选项。

        (2)DriverManager是静态的,DataSource是动态的。

        DriverManager是一个静态类,这意味着开发人员需要在代码中硬编码驱动程序的名称和连接字符串。而DataSource是一个动态组件,它可以通过配置文件或JNDI(Java命名和目录接口)获取。// 什么是JNDI,后续文章会有介绍

        (3)DriverManager没有连接池管理功能,DataSource可以管理连接池

        当使用DriverManager建立数据库连接时,每个连接都是一个单独的对象,并在使用后需要手动关闭。而DataSource可以管理连接池,这意味着它可以维护一个连接池,以便在需要时重复使用连接,从而提高连接的利用率和性能。// 连接池非常的重要,可以避免连接反复创建

        (4)DataSource可以提供更高级的配置和安全功能。

        DataSource提供了更多的配置选项,如连接超时、事务隔离级别等,可以通过这些选项来优化连接的性能和可靠性。此外,DataSource还可以提供安全功能,如加密传输、身份验证等,以保护连接和数据的安全性。

        所以,DriverManager是一个基本的数据库连接服务,适合简单的连接场景;而DataSource是一个更高级别的服务,适合需要更高级配置和连接管理的场景。在实际开发中,开发人员应该根据具体需求选择合适的组件来建立数据库连接。// 顺便说一下,Oracle官方推荐使用DataSource

5、如何使用DataSource进行数据库连接?

        在Java JDBC中,使用DataSource连接数据库需要遵循以下步骤:

  1. 选择一个DataSource实现:Java提供了多种DataSource实现,如BasicDataSource、DriverManagerDataSource、ComboPooledDataSource等。选择适合自己的DataSource实现。
  2. 配置DataSource:配置DataSource对象需要指定数据库连接的URL、用户名、密码等信息。这些信息可以通过DataSource对象的setter方法来设置。
  3. 获取Connection对象:DataSource对象可以通过调用getConnection()方法来获取Connection对象。该方法返回一个Connection对象,表示与数据库的连接。
  4. 执行SQL语句:Connection对象可以通过创建Statement或PreparedStatement对象来执行SQL语句。
  5. 关闭连接:在使用完Connection对象后,需要及时关闭连接。可以通过调用Connection对象的close()方法来关闭连接。

        以下是一个使用DataSource连接数据库的示例代码:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.DataSource;

public class Example {

    public static void main(String[] args) throws Exception {
        // 选择一个DataSource实现
        DataSource dataSource = new BasicDataSource();
        
        // 配置DataSource
        ((BasicDataSource) dataSource).setUrl("jdbc:mysql://localhost:3306/mydatabase");
        ((BasicDataSource) dataSource).setUsername("username");
        ((BasicDataSource) dataSource).setPassword("password");
        
        // 获取Connection对象
        Connection connection = dataSource.getConnection();
        
        // 执行SQL语句
        PreparedStatement statement = connection.prepareStatement("SELECT * FROM mytable");
        ResultSet resultSet = statement.executeQuery();
        while (resultSet.next()) {
            // 处理结果集
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + ": " + name);
        }
        
        // 关闭连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

        // DataSource 有多种实现(由驱动程序供应商实现),可以灵活进行选择。文章来源地址https://www.toymoban.com/news/detail-433573.html

到了这里,关于Java JDBC 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java 进阶篇】JDBC查询操作详解

    在数据库编程中,查询是一项非常常见且重要的操作。JDBC(Java Database Connectivity)提供了丰富的API来执行各种类型的查询操作。本篇博客将详细介绍如何使用JDBC进行查询操作,包括连接数据库、创建查询语句、执行查询、处理结果集等方面的内容。无论你是初学者还是有一定

    2024年02月07日
    浏览(33)
  • K8S基础理论,核心组件,数据流向详解

    目录 第一章.k8s概述 1.1.什么是云原生 1.2.什么是K8S 1.3.K8S的优势 1.4.K8S的功能 1.5.K8S 的特性: 1.6.Kubernetes 集群架构与组件 第二章.K8S的核心组件 2.1.Master 组件 2.2.配置存储中心 2.3.Node 组件 第三章.Kubernetes 核心概念 3.1.Pod 3.2.Pod 控制器 3.3.Label 3.4.Label 选择器(Label selector) 3.5.S

    2024年02月03日
    浏览(34)
  • 自动化测试工具-Selenium:Selenium的核心三大组件详解

    目录 1. WebDriver 1.1 WebDriver的通信方式 1.2 WebDriver的功能 1.3 W3C推荐标准 2. Grid 3. IDE Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。官方对Selenium认可的三大组件或API分别是: WebDriver、Selenium IDE、Grid。 其中,WebDriver又被称为Selenium的核心。 下面本篇文章将深度介

    2024年02月03日
    浏览(36)
  • 【Java 进阶篇】深入理解 JDBC:Java 数据库连接详解

    数据库是现代应用程序的核心组成部分之一。无论是 Web 应用、移动应用还是桌面应用,几乎都需要与数据库交互以存储和检索数据。Java 提供了一种强大的方式来实现与数据库的交互,即 JDBC(Java 数据库连接)。本文将深入探讨 JDBC 的各个方面,从基本概念到实际编程示例

    2024年02月07日
    浏览(43)
  • 【Java 进阶篇】JDBC ResultSet 遍历结果集详解

    在Java数据库编程中,经常需要执行SQL查询并处理查询结果。 ResultSet (结果集)是Java JDBC中用于表示查询结果的关键类之一。通过遍历 ResultSet ,我们可以访问和操作从数据库中检索的数据。本文将详细介绍如何使用JDBC来遍历 ResultSet ,以及在遍历过程中的注意事项。 Result

    2024年02月06日
    浏览(28)
  • JAVA JDBC数据库开发详解:从入门到精通

    简介: Java是一种面向对象,安全灵活的编程语言,已经成为了世界上最流行的编程语言之一。Java语言的一个重要应用领域就是数据库开发。通过Java JDBC(Java Database Connectivity) API,开发人员可以使用Java语言来访问并操作各种数据库。 本篇资料将会详细介绍Java JDBC数据库

    2024年02月02日
    浏览(34)
  • 【云原生 Prometheus篇】Prometheus架构详解与核心组件的应用实例(Exporters、Grafana...)

    老牌传统的: Zabbix 、Nagios、Cacti … 云时代的: Prometheus 、夜莺 … … Zabbix:更适用于传统业务架构的物理机、虚拟机环境的监控,对容器的支持比较差;数据存储主要采用的是关系型数据库,会随着监控节点数量的增加,关系型数据库的压力也会变大,监控数据的读写也会

    2024年02月22日
    浏览(32)
  • IDEA使用JDBC详解(2023最新)

      jdbc的jar包下载 下载地址: 官方下载地址: MySQL :: Download Connector/J 备用下载地址: mysql5的jdbc驱动包 mysql8的jdbc驱动包   右键根目录新建一个文件夹命名为jdbc用于放置jar包  将jdbc的jar包复制道新建的jdbc目录下 右键jdbc目录选择添加为库 一下是本人写的一个简单的小实例,

    2024年02月07日
    浏览(51)
  • 【Java 进阶篇】JDBC Connection详解:连接到数据库的关键

    在Java中,要与数据库进行交互,需要使用Java数据库连接(JDBC)。JDBC允许您连接到不同类型的数据库,并执行SQL查询、插入、更新和删除操作。在JDBC中,连接数据库是一个重要的步骤,而 Connection 对象是实现这一目标的关键。本篇博客将详细解释 Connection 对象的作用、创建

    2024年02月05日
    浏览(31)
  • JDBC详解(三):使用PreparedStatement实现CRUD操作(超详解)

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! ⭕ 数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果。其实

    2023年04月26日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包