详解JDBC的概念及获取数据库连接的5种方式

JDBC概念介绍

Java数据库连结(JDBC)是用Java编写的一个API(应用程序编程接口),用于与数据库通讯及操作的一套规范接口。它可以让我们用Java语言访问各种不同的SQL数据库。

获取数据库连接的5种方式

前提条件

在使用JDBC连接数据库之前,需要首先导入mysql的JDBC驱动JAR包。这里以MySQL为例,我们需要在Maven或Gradle中引入如下依赖:

<!-- MySQL JDBC -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.20</version>
</dependency>

该JAR包可以在MySQL官方网站上下载。

另外,需要确保已经安装并启动了MySQL数据库服务。

1. DriverManager获取数据库连接

在JDBC中获取数据库连接的最基本方法是使用DriverManager类。它提供了getConnection方法,通过提供数据库连接URL、用户名和密码等信息,返回一个连接到数据库的Connection对象。

String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String password = "your_password";

// 注册 JDBC 驱动
Class.forName("com.mysql.cj.jdbc.Driver");

// 获取连接
Connection conn = DriverManager.getConnection(url, user, password);

其中,Class.forName("com.mysql.cj.jdbc.Driver");是加载MySQL JDBC驱动的语句,可用于静态代码块中,或者放在main方法中。

2. DataSource获取数据库连接

DataSource是一个数据源接口,它有多种实现,比如BasicDataSourcec3p0DBCPHikariCP等。其中,HikariCP是市面上最快的连接池之一。

String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String password = "your_password";

HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername(user);
config.setPassword(password);
config.setMaximumPoolSize(10);

DataSource dataSource = new HikariDataSource(config);

Connection conn = dataSource.getConnection();

在上述代码中,我们用了HikariCP作为连接池,并设置了最大连接池数量为10。

3. BasicDataSource获取数据库连接

BasicDataSource是一种开源的连接池,它实现了DataSource接口。

String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String password = "your_password";

BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
dataSource.setMaxTotal(10);

Connection conn = dataSource.getConnection();

在上述代码中,我们用了BasicDataSource作为连接池,并设置了最大连接池数量为10。

4. JNDI获取数据库连接

在Java Web开发中,可以通过JNDI(Java Naming and Directory Interface)来获取数据库连接,它提供了一种统一的访问方式。在Tomcat等Web容器中,我们可以使用Context.xml或者Web.xml进行配置。

<Resource name="jdbc/your_database" auth="Container"
          type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/your_database" username="your_username" password="your_password"
          maxTotal="10" maxIdle="5" />
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:/comp/env");
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/your_database");

Connection conn = dataSource.getConnection();

在上述代码中,我们使用了Tomcat的Context.xml文件对数据源进行配置,并在代码中通过JNDI方式获取数据库连接。

5. 第三方库获取数据库连接

除了以上几种方式以外,还有一些第三方JDBC与数据库连接相关的库,如JOOQMyBatisSpring JDBC等,它们提供了更加灵活、高级的SQL操作方式。

// 使用JOOQ获取数据库连接
DSLContext dslContext = DSL.using(dataSource, SQLDialect.MYSQL);
Connection conn = dslContext.connection();

在上述代码中,我们使用了JOOQ库获取数据库连接,并通过DSLContext类提供的connection方法获取Connection对象。

示例说明

示例1:使用DriverManager连接MySQL

在此示例中,我们实现了一个连接MySQL数据库的简单Java程序,并通过Statement对象执行了一条查询语句。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySQLExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/your_database";
        String user = "your_username";
        String password = "your_password";

        Connection conn = null;
        Statement stmt = null;
        try {
            // 注册 JDBC 驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 打开连接
            conn = DriverManager.getConnection(url, user, password);

            // 执行查询
            stmt = conn.createStatement();
            String sql = "SELECT id, name, age FROM your_table";
            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.println("ID:" + id + ", Name:" + name + ", Age:" + age);
            }

            // 释放资源
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null) stmt.close();
            } catch (Exception e) {}
            try {
                if (conn != null) conn.close();
            } catch (Exception e) {}
        }
    }
}

上述代码中,我们通过DriverManager类获取了MySQL数据库的连接,并使用Statement对象执行了一条查询语句,最后输出了查询结果。

示例2:使用HikariCP连接MySQL

在此示例中,我们使用HikariCP作为连接池来连接MySQL数据库,并通过PreparedStatement对象执行了一条插入语句。

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.UUID;

public class MySQLExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/your_database";
        String user = "your_username";
        String password = "your_password";

        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(url);
        config.setUsername(user);
        config.setPassword(password);
        config.setMaximumPoolSize(10);

        HikariDataSource dataSource = new HikariDataSource(config);

        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            // 获取连接
            conn = dataSource.getConnection();

            // 执行插入
            pstmt = conn.prepareStatement("INSERT INTO your_table (id, name, age) VALUES (?, ?, ?)");
            pstmt.setString(1, UUID.randomUUID().toString());
            pstmt.setString(2, "Wendy");
            pstmt.setInt(3, 25);
            int result = pstmt.executeUpdate();
            System.out.println("Insert rows: " + result);

            // 释放资源
            pstmt.close();
            conn.close();
            dataSource.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (pstmt != null) pstmt.close();
            } catch (Exception e) {}
            try {
                if (conn != null) conn.close();
            } catch (Exception e) {}
        }
    }
}

上述代码中,我们使用了HikariCP作为连接池,并使用了PreparedStatement对象执行了一条插入语句,最后输出了插入结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JDBC的概念及获取数据库连接的5种方式 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • Spring整合SpringMVC + Mybatis基础框架的配置文件详解

    Spring整合SpringMVC + Mybatis基础框架的配置文件详解 Spring整合SpringMVC和Mybatis是一种常用的Java Web开发框架组合,它们分别负责业务逻辑、Web层和数据访问层。本文将介绍如何使用这三个框架构建基础框架,并详细讲解配置文件的设置。 环境搭建 在开始之前,我们需要先搭建好开发环境。以下是环境搭建的步骤: 安装…

    Java 2023年5月17日
    00
  • DUBBO 日志过滤器,输出dubbo 接口调用入参、出参等信息(最新推荐)

    下面我将详细讲解如何使用Dubbo日志过滤器来输出Dubbo接口调用入参、出参等信息。 1. Dubbo日志过滤器 Dubbo是一款高性能的分布式服务框架,但在实际的开发过程中,我们有时需要输出一些Dubbo接口的调用信息,例如调用的入参、调用的出参等。 Dubbo提供了日志过滤器的功能,我们可以通过日志过滤器来输出Dubbo接口的调用信息。Dubbo提供了…

    Java 2023年5月26日
    00
  • 每日六道java新手入门面试题,通往自由的道路–JVM

    每日六道Java新手入门面试题,通往自由的道路 – JVM 概述 毎天解答 Java 相关的面试题,从基础开始逐步深入,让新手们熟悉和理解 Java 的运行原理,从而更好地掌握该编程语言。其中,JVM 是一个重要的话题,本文将详细讲解如何攻略每日六道Java新手入门面试题,重点讲解 JVM 部分。 JVM JVM(Java Virtual Machine,J…

    Java 2023年5月19日
    00
  • Java中的==使用方法详解

    Java中的==使用方法详解 在Java中,==是一种用于比较两个变量是否相等的运算符,但是它的使用方法有一些需要注意的地方。 关于==和equals()方法 在Java中,==用于比较两个变量的引用地址是否相等,即它们是否指向同一块内存地址。而equals()方法通常被用来比较两个对象的内容是否相等。 示例1: String str1 = "he…

    Java 2023年5月20日
    00
  • Java虚拟机精选面试题20道

    下面将详细讲解“Java虚拟机精选面试题20道”的完整攻略。 1. 什么是Java虚拟机 在讲解Java虚拟机面试题之前,首先需要了解什么是Java虚拟机。简单来说,Java虚拟机就是Java程序运行的环境,它使用Java字节码作为中间语言,在各种平台上实现了Java应用程序的跨平台性。 2. 学习Java虚拟机面试题的重要性 学习虚拟机面试题对于Java程…

    Java 2023年5月20日
    00
  • Spark Streaming编程初级实践详解

    Spark Streaming编程初级实践详解 Spark Streaming是Apache Spark的一个扩展模块,它用于处理实时数据流。在本文中,我们将介绍Spark Streaming编程的基础知识和实践。主要包括以下内容: Spark Streaming简介 Spark Streaming编程基础 实时数据处理应用示例 Spark Streamin…

    Java 2023年6月2日
    00
  • spring AOP的Around增强实现方法分析

    下面是详细讲解“Spring AOP的Around增强实现方法分析”的完整攻略。 一、介绍 在Spring框架中,AOP(面向切面编程)是实现被广泛使用的一种技术。其中,Around增强是AOP中最复杂的增强类型之一,因此本文将对它的实现方法进行分析。 二、Around增强实现 在Spring框架中,Around增强实现需要使用到 ProceedingJoi…

    Java 2023年5月31日
    00
  • 服务器安全设置之 MSSQL安全设置

    服务器安全设置之 MSSQL安全设置攻略 本攻略介绍如何针对MSSQL数据库服务器进行安全设置,以确保数据库的安全性。 1. 修改默认端口号 MSSQL的默认端口号是1433,在互联网中比较容易被黑客扫描到。如果将端口号修改为其他不常用的端口,可以提高黑客攻击的难度。 示例:将MSSQL的默认端口号修改为5555 在MSSQL Configuration M…

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