当前位置:首页 > 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依赖

如何用java连接数据库

<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查询并处理结果。

查询示例

如何用java连接数据库

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();
        }
    }
}

事务管理

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

事务示例

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();
        }
    }
}

分享给朋友:

相关文章

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorld…

如何用react写页面跳转

如何用react写页面跳转

使用React Router进行页面跳转 React Router是React生态中最常用的路由管理库,适用于单页面应用(SPA)的导航和页面跳转。以下是具体实现方法: 安装React Router…

如何用react构建单页面

如何用react构建单页面

使用React构建单页面应用(SPA)的步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行输入node -v和npm -v验证版本。推荐使用LTS版本。 创建…

后端路由框架里react如何用

后端路由框架里react如何用

React 后端路由框架使用指南 React 本身是一个前端库,通常与后端路由框架(如 Express、Koa 或 Next.js)结合使用。以下是几种常见场景下的使用方法: 使用 Express…

如何用js实现放大镜

如何用js实现放大镜

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

如何用java画图

如何用java画图

使用Java绘图基础 Java提供了多种绘图方式,常用的工具包括java.awt和javax.swing包中的类。绘图通常在JPanel或JFrame的paintComponent方法中完成。 im…