一文带你快速学会JDBC及获取连接的五种方式

一文带你快速学会JDBC及获取连接的五种方式

JDBC(java database connectivity)是Java语言操作数据库的标准API。在Java应用程序中,我们必须通过JDBC API来获取数据库连接,进而执行SQL语句。

本文将介绍JDBC的基础知识及使用方法,并详细讲述获取连接的五种方式。

JDBC基础知识

  1. JDBC 架构

JDBC API是一组类和接口所组成的包,其主要实现分为两以下两部分:

  • JDBC 驱动程序:该实现部分包含JDBC API的类和接口,以及与特定数据库服务器交互的类。
  • JDBC管理者:使用JDBC API编写应用程序时,必须使用JDBC管理者指定要使用的驱动程序。

  • JDBC 基本使用

JDBC提供了一个java.sql包,其中的一些常用类和接口包括:

  • DriverManager :DriverManager是JDBC的管理者,负责加载数据库驱动程序、建立数据库连接、控制JDBC驱动程序并处理SQL异常。
  • Connection :连接对象代表应用程序与数据库的连接。
  • Statement :用于向数据库发送SQL查询及更新命令。
  • ResultSet :代表SQL查询返回的结果集。

连接数据库的一般步骤如下:

  1. 加载数据库驱动程序。
  2. 定义数据库连接URL字符串。
  3. 建立数据库连接。
  4. 使用Statement对象执行SQL查询并获得ResultSet结果集。
  5. 遍历ResultSet结果集获取查询结果。
  6. 关闭ResultSet结果集、Statement对象和数据库连接。

基本示例代码:

import java.sql.*;

public class JdbcDemo {
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost:3306/test";

   static final String USER = "root";
   static final String PASS = "root";

   public static void main(String[] args) throws SQLException {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName(JDBC_DRIVER);

         conn = DriverManager.getConnection(DB_URL,USER,PASS);

         stmt = conn.createStatement();
         String sql;
         sql = "select id, name, age from student";
         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.print(", Age: " + age);
            System.out.println();
         }
         rs.close();
         stmt.close();
         conn.close();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null) stmt.close();
         }catch(SQLException se2){
         }
         try{
            if(conn!=null) conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
   }
}

获取连接的五种方式

  1. 使用DriverManager获取连接

DriverManager是JDBC的管理者,是JDBC连接的最常见方式。该方式需要传入包含数据库地址、用户名和密码信息的Database URL,和数据库驱动的完整类名称。

// 加载数据库驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");

// 定义数据库连接URL
String url = "jdbc:mysql://localhost:3306/test?useSSL=false";

// 建立连接
Connection conn = DriverManager.getConnection(url, "root", "password");
  1. 使用DataSource获取连接

DataSource是JDBC 2.0 新增的标准接口,通过向数据源请求连接可获得一个Connection对象。该方式需要传入可用于获取连接的数据源对象。

// 创建 BasicDataSource
BasicDataSource dataSource = new BasicDataSource();

// 设置 JDBC 驱动
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

// 设置 URL
dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false");

// 设置用户名及密码
dataSource.setUsername("root");
dataSource.setPassword("password");

// 获取连接
Connection conn = dataSource.getConnection();
  1. 使用JNDI获取连接

Java命名和目录接口(JNDI)是Java Enterprise Edition的标准API之一,用于管理对象和资源。使用JNDI获取连接,需要将数据库连接存储在JNDI命名服务中,Java应用程序从JNDI命名服务获取连接。

// 初始化Context对象
InitialContext ic = new InitialContext();

// 通过JNDI名称获取DataSource对象
DataSource dataSource = (DataSource) ic.lookup("java:/comp/env/jdbc/mydbds");

// 获取连接
Connection conn = dataSource.getConnection();
  1. 使用JDBC 4.0自动加载驱动

JDBC 4.0(Java SE 6.0)新功能自动加载驱动程序,可以自动加载符合SPI “Service Provider Interface”规范的驱动程序。

// 定义database URL
String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8";

// 使用DriverManager获取连接
Connection conn = DriverManager.getConnection(url, "root", "password");
  1. 使用ConnectionPool获取连接

使用ConnectionPool可以实现数据库连接的复用。在多线程情况下,该方式可以更有效率地处理数据库连接请求。

常见的开源连接池有:c3p0、DBCP2和HikariCP等。

//创建HikariConfig
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/test");
config.setUsername("root");
config.setPassword("password");

//创建DataSource
DataSource ds = new HikariDataSource(config);

//获取连接
Connection conn = ds.getConnection();

完整的示例代码可以参考:连接 MySQL 数据库示例

结语

本文详细讲解JDBC的基础知识及使用方式,并介绍了五种获取连接的方式。不同方式的优劣要根据各自的特点来评估,在应用过程中需要根据实际情况选择合适的方式来获取连接。

关注我的Github,和我一起学习吧!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你快速学会JDBC及获取连接的五种方式 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java Freemarker页面静态化实例详解

    Java FreeMarker页面静态化实例详解 什么是FreeMarker页面静态化 FreeMarker是一款基于模板技术实现的Java模板引擎,它可以将动态的HTML页面转化成静态的HTML页面,将一个基于模板的数据模型填充到模板中生成完整的HTML页面,并将HTML页面中的占位符等内容替换成相应的数据,将页面的内容动态的生成并输出。FreeMarke…

    Java 2023年6月15日
    00
  • java 实现回调代码实例

    Java 实现回调是一种常见的编程模式,它可以帮助我们解决很多传统的异步编程问题。本文将为你详细讲解 Java 实现回调的完整攻略,并提供两个实例说明。 什么是回调 回调是指一种可选择的机制,应用程序可以将函数或方法(回调函数)作为参数传递到另一个函数或方法中,该函数或方法会在后续或并行线程中调用传入的函数或方法,让其完成某些操作。 回调实现 Java 中实…

    Java 2023年5月18日
    00
  • IntelliJ IDEA修改新建文件自动生成注释的user名

    下面是详细的攻略: 首先,我们需要了解一下在 IntelliJ IDEA 中如何自定义代码模板,这个可以通过以下步骤完成: 打开 IntelliJ IDEA,点击菜单栏的 File -> Settings 选项 在弹出的设置面板中,找到 Editor -> File and Code Templates 选项卡 在该选项卡中,我们可以看到默认的代…

    Java 2023年5月31日
    00
  • java字符串格式化(String类format方法)

    当我们需要将一个字符串和一些占位符组合起来形成一个新的字符串时,该怎么做呢?答案就是使用Java字符串格式化方法。Java字符串格式化方法可以让我们灵活地使用字符串格式化功能,将我们想要的内容组合成一个格式化好的字符串。 1. 字符串格式化的语法 Java字符串格式化方法使用占位符来表示要在新字符串中插入的值。以下是常见的占位符及其类型和示例: 占位符 类型…

    Java 2023年5月26日
    00
  • 如何解决java获取时间相差8小时的问题

    当使用Java中的Date类或者Calendar类获取当前时间时,由于Java默认使用的是UTC(Coordinated Universal Time,协调世界时)时间,可能会导致本地获取的时间与实际时间相差8小时。解决这一问题的方法有以下两种: 1.使用DateFormat进行格式化输出 可以使用SimpleDateFormat类将获取到的Date对象按照…

    Java 2023年5月20日
    00
  • SpringBoot依赖管理的源码解析

    SpringBoot依赖管理的源码解析 SpringBoot依赖管理包括以下三个方面:依赖注入、自动配置、起步依赖。 1.1 依赖注入 SpringBoot采用了Java注解的方式来实现依赖注入,主要包括以下注解: @Autowired:自动装配,SpringBoot会自动将Bean注入到需要的地方; @Component:将当前类标记为Spring Bea…

    Java 2023年5月19日
    00
  • 解决dubbo错误ip及ip乱入问题的方法

    解决dubbo错误ip及ip乱入问题的方法 在使用dubbo进行微服务开发时,可能会出现一些ip相关的问题,如服务提供者使用了错误的ip地址进行暴露,或者消费者调用时使用了错误的ip地址等等。这些问题会导致服务无法正常运行。本攻略将介绍如何解决dubbo错误ip及ip乱入问题。 Dubbo服务提供者使用了错误的ip地址进行暴露 在dubbo的服务提供者端,可…

    Java 2023年6月2日
    00
  • java中Spring Security的实例详解

    Java中Spring Security的实例详解 前言 Spring Security 是一个强大而灵活的框架,用于在 Java 应用程序中实现认证和授权。它可以与许多不同的身份验证和授权方案一起使用,因此可以适应广泛的需求。本文将介绍 Spring Security 的概念和用法,并提供两个基于 Spring Security 的示例。 Spring S…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部