当前位置:首页 > Java

如何用java连接数据库

2026-02-04 09:34:09Java

使用JDBC连接数据库

JDBC(Java Database Connectivity)是Java中连接数据库的标准API。以下是使用JDBC连接MySQL数据库的示例步骤。

添加JDBC驱动依赖 在Maven项目中,添加MySQL JDBC驱动依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>

加载驱动并建立连接

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try {
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接成功");
            connection.close();
        } catch (SQLException e) {
            System.out.println("数据库连接失败");
            e.printStackTrace();
        }
    }
}

使用连接池提高性能

对于生产环境,建议使用连接池管理数据库连接。以下是使用HikariCP连接池的示例。

添加HikariCP依赖

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

配置连接池

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

public class ConnectionPoolExample {
    public static void main(String[] args) {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
        config.setUsername("root");
        config.setPassword("password");
        config.setMaximumPoolSize(10);

        try (HikariDataSource dataSource = new HikariDataSource(config)) {
            System.out.println("连接池创建成功");
        }
    }
}

执行SQL查询

建立连接后,可以执行SQL查询并处理结果。

查询示例

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

public class QueryExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(url, username, password);
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery("SELECT * FROM users")) {

            while (resultSet.next()) {
                System.out.println("ID: " + resultSet.getInt("id"));
                System.out.println("Name: " + resultSet.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

使用PreparedStatement防止SQL注入

对于参数化查询,应使用PreparedStatement。

PreparedStatement示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class PreparedStatementExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(url, username, password);
             PreparedStatement statement = connection.prepareStatement(
                 "INSERT INTO users (name, email) VALUES (?, ?)")) {

            statement.setString(1, "John Doe");
            statement.setString(2, "john@example.com");
            int rowsInserted = statement.executeUpdate();
            System.out.println(rowsInserted + " rows inserted.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

事务管理

对于需要原子性操作的情况,可以使用事务。

事务示例

如何用java连接数据库

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

public class TransactionExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            connection.setAutoCommit(false);

            try (Statement statement = connection.createStatement()) {
                statement.executeUpdate("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
                statement.executeUpdate("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
                connection.commit();
                System.out.println("事务提交成功");
            } catch (SQLException e) {
                connection.rollback();
                System.out.println("事务回滚");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

分享给朋友:

相关文章

如何用vue实现轮播

如何用vue实现轮播

使用Vue实现轮播 基础实现(基于原生Vue) 创建轮播组件,通过动态绑定v-for和v-show控制显示当前幻灯片: <template> <div class="carou…

如何用react做分页

如何用react做分页

使用 React 实现分页功能 分页是 Web 开发中常见的需求,React 可以通过状态管理和组件化轻松实现分页功能。以下是实现分页的几种方法。 基础分页实现 定义状态 使用 useState…

如何用ts重构react项目

如何用ts重构react项目

使用 TypeScript 重构 React 项目的步骤 安装 TypeScript 及相关依赖 在项目中安装 TypeScript 和 React 的类型定义文件: npm install -…

react中如何用回车事件

react中如何用回车事件

在React中处理回车事件 在React中,可以通过监听键盘事件来捕获回车键(Enter key)的按下动作。以下是几种常见场景的实现方法: 监听输入框的回车事件 在输入框中按下回车时触发特…

如何用js实现分页

如何用js实现分页

分页实现的基本逻辑 分页的核心是将大量数据分割成多个页面展示。通常需要计算总页数、当前页数据范围,并处理用户翻页操作。 前端分页实现 纯前端分页适用于数据量较小的情况,所有数据一次性加载后由前端分割…

如何用js实现放大镜

如何用js实现放大镜

实现放大镜效果的方法 使用JavaScript实现放大镜效果通常需要结合HTML和CSS,以下是具体实现步骤: 创建基础HTML结构 在HTML中设置一个容器元素,包含原始图片和放大镜区域: &l…