怎么用java建立数据库连接

使用Java建立数据库连接需加载驱动(Class.forName)、配置URL、驱动管理获取连接,示例代码DriverManager.getConnection(url,user,pwd)

前置准备:添加数据库驱动依赖

Java通过JDBC(Java Database Connectivity)实现数据库连接,不同数据库需引入对应的驱动jar包或依赖,以下是常见数据库的驱动配置方式:

怎么用java建立数据库连接

数据库类型 驱动依赖 说明
MySQL mysql:mysql-connector-java:8.0.34(Maven坐标) 需匹配MySQL版本,支持JDBC标准接口
Oracle com.oracle.database.jdbc:ojdbc8:19.8.0.0 需下载Oracle官方驱动jar包或通过Maven引入
SQL Server com.microsoft.sqlserver:mssql-jdbc:9.4.0.jre8 微软官方JDBC驱动
PostgreSQL org.postgresql:postgresql:42.6.0 开源驱动,支持多种PostgreSQL版本

操作步骤

  1. Maven项目:在pom.xml中添加对应依赖。
  2. 非Maven项目:手动将驱动jar包添加到classpath中(如IDEA的Libraries配置)。

加载数据库驱动类

JDBC需通过反射加载数据库驱动类,早期版本(JDK 6及之前)需显式调用Class.forName(),高版本JDBC可自动加载,但建议显式声明以避免兼容性问题。

代码示例

try {
    // 加载MySQL驱动(以MySQL为例)
    Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
    System.err.println("驱动类未找到,请检查依赖是否添加");
    e.printStackTrace();
}

说明

  • 不同数据库驱动类名不同(如Oracle为oracle.jdbc.driver.OracleDriver)。
  • 如果使用JDK 6以上版本且驱动jar包已正确加载,可省略Class.forName(),但推荐保留以提升代码可读性。

配置数据库连接URL

连接URL需包含数据库类型、主机地址、端口、数据库名及参数,以下是常见数据库的URL格式:

数据库类型 连接URL模板 默认端口
MySQL jdbc:mysql://localhost:3306/database_name?useSSL=false&serverTimezone=UTC 3306
Oracle jdbc:oracle:thin:@localhost:1521:orcl 1521
SQL Server jdbc:sqlserver://localhost:1433;databaseName=database_name 1433
PostgreSQL jdbc:postgresql://localhost:5432/database_name 5432

参数说明

怎么用java建立数据库连接

  • useSSL=false:禁用SSL(MySQL特有,避免加密连接警告)。
  • serverTimezone=UTC:设置时区,避免时间偏差。
  • databaseName:指定连接的数据库名称。

建立数据库连接

通过DriverManager.getConnection()获取连接对象,需传入URL、用户名和密码。

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnectionDemo {
    public static void main(String[] args) {
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "123456";
        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            if (connection != null) {
                System.out.println("数据库连接成功!");
            }
        } catch (SQLException e) {
            System.err.println("连接失败,请检查URL、用户名或密码");
            e.printStackTrace();
        }
    }
}

关键点

  1. 异常处理SQLException可能由URL错误、认证失败等原因抛出。
  2. 资源管理:使用try-with-resources确保连接自动关闭,避免资源泄露。

执行SQL与关闭连接

获取连接后,需创建StatementPreparedStatement执行SQL,并在操作完成后关闭连接。

代码示例

String query = "SELECT  FROM users";
try (Connection conn = DriverManager.getConnection(url, username, password);
     PreparedStatement pstmt = conn.prepareStatement(query);
     ResultSet rs = pstmt.executeQuery()) {
    while (rs.next()) {
        // 处理结果集
        System.out.println(rs.getString("username"));
    }
} catch (SQLException e) {
    e.printStackTrace();
}

最佳实践

怎么用java建立数据库连接

  • 优先使用PreparedStatement防止SQL注入。
  • 关闭顺序:ResultSetStatementConnection

连接池优化(可选)

频繁创建连接性能较低,推荐使用连接池(如HikariCP、Druid)。

HikariCP示例

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
config.setUsername("root");
config.setPassword("123456");
HikariDataSource dataSource = new HikariDataSource(config);
// 获取连接
try (Connection conn = dataSource.getConnection()) {
    // 执行SQL
}

FAQs

Q1:加载驱动时出现ClassNotFoundException怎么办?
A1:检查驱动jar包是否已添加到classpath,或Maven依赖是否正确,例如MySQL需确保mysql-connector-java版本与项目兼容。

Q2:连接成功后执行SQL却提示Communications exception
A2:可能是数据库服务未启动、端口错误或网络限制,需确认数据库服务器状态,并检查防火墙是否开放对应端口(如MySQL的3306)。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/67836.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月18日 22:46
下一篇 2025年7月18日 22:52

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN