电脑学堂
第二套高阶模板 · 更大气的阅读体验

Java数据库连接实战:让程序和数据通上话

发布时间:2025-12-20 19:20:24 阅读:193 次

做开发的时候,经常要让程序数据打交道。比如你写了个小工具,想把用户注册信息存进MySQL,这时候就得用Java连上数据库。这事儿不复杂,但得一步步来,不然容易卡在半道上。

先搞清楚要用什么驱动

Java本身不能直接读数据库,得靠JDBC(Java Database Connectivity)这套机制。不同的数据库有不同的驱动包,比如MySQL就得下载mysql-connector-java.jar。现在大多数项目都用Maven管理依赖,加一行就行:

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

写代码连上数据库

有了驱动,接下来就是写代码。假设你的数据库叫test_db,用户名root,密码123456,那连接代码长这样:

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

public class DbConnect {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test_db";
        String user = "root";
        String password = "123456";

        try {
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println("连接成功!");
        } catch (Exception e) {
            System.out.println("连接失败:" + e.getMessage());
        }
    }
}

运行之后如果看到“连接成功”,说明已经通了。不过别高兴太早,本地跑通不代表上线就没问题。有时候公司内网数据库端口没开,或者防火墙拦着,照样连不上。

别忘了处理资源和异常

实际项目里可不能像上面那样简单try一下就完事。Connection、Statement、ResultSet这些资源不用了必须关掉,否则时间一长就会内存溢出。推荐用try-with-resources写法,自动释放:

try (Connection conn = DriverManager.getConnection(url, user, password);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
    
    while (rs.next()) {
        System.out.println(rs.getString("username"));
    }
} catch (Exception e) {
    e.printStackTrace();
}

连接池能提升性能

每次操作都新建连接,速度慢还耗资源。高并发场景下,建议用连接池,比如HikariCP。它配置简单,性能也好。初始化一个数据源,后面取连接就像从桶里拿水一样方便:

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

HikariDataSource dataSource = new HikariDataSource(config);

// 用的时候
try (Connection conn = dataSource.getConnection()) {
    // 执行SQL
}

这种方式适合频繁访问数据库的应用,比如后台管理系统、订单处理服务。启动时建好一批连接,反复利用,省时又稳定。

常见问题注意点

连不上别急着改代码,先看报错信息。常见的“UnknownHostException”是主机名不对,“Access denied”一般是密码错了。还有时候URL写成了localhost,部署到服务器后根本访问不到,得换成真实IP。

另外,JDBC默认不开启SSL,如果数据库要求加密连接,记得在URL后面加上?useSSL=true&requireSSL=true,不然会被拒绝。