当前位置:首页 > 数据库 > 正文

如何用Java连接数据库

如何用Java连接数据库 第1张

如何用Java连接数据库 第2张

Java连接数据库主要通过JDBC API实现,首先加载数据库驱动(如mysql-connector-java),使用DriverManager获取Connection对象建立连接,随后通过Statement或PreparedStatement执行SQL语句,处理ResultSet返回的数据结果集,最后关闭连接释放资源,也可使用连接池(如HikariCP)或ORM框架(如MyBatis)优化性能与管理。

JDBC基础连接步骤(以MySQL为例)

准备驱动与环境

  • 添加JDBC驱动依赖(Maven配置): <!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>

六步连接数据库

import java.sql.*; public class JdbcDemo { public static void main(String[] args) { // 1. 加载驱动(JDBC 4.0+ 可自动加载) try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } // 2. 建立连接(重要参数:URL、用户名、密码) String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "securePwd123"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { // 3. 创建SQL语句 String sql = "SELECT id, name FROM users"; // 4. 执行查询 ResultSet rs = stmt.executeQuery(sql); // 5. 处理结果集 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } } catch (SQLException e) { // 6. 异常处理 System.err.println("数据库错误: " + e.getMessage()); } // try-with-resources 自动关闭连接 } }


关键优化与安全实践

防SQL载入:使用PreparedStatement

String sql = "SELECT * FROM users WHERE email = ?"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, "user@example.com"); // 参数化赋值 ResultSet rs = pstmt.executeQuery(); }

资源关闭规范

  • 始终使用 try-with-resources(Java 7+)自动关闭Connection, Statement, ResultSet。
  • 手动关闭时需按反向顺序: finally { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); }

配置文件分离

  • 避免硬编码敏感信息,使用properties文件: # config.properties db.url=jdbc:mysql://localhost:3306/mydb db.user=root db.password=securePwd123 Properties props = new Properties(); props.load(new FileInputStream("config.properties")); DriverManager.getConnection(props.getProperty("db.url"), props);


高性能连接池应用

推荐工具:HikariCP(业界最快连接池)

HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost/mydb"); config.setUsername("root"); config.setPassword("securePwd123"); config.addDataSourceProperty("cachePrepStmts", "true"); // 优化性能 try (HikariDataSource ds = new HikariDataSource(config); Connection conn = ds.getConnection()) { // 执行操作... }


现代框架整合(Spring Boot)

配置数据源(application.yml)

spring: datasource: url: jdbc:mysql://localhost/mydb username: root password: securePwd123 driver-class-name: com.mysql.cj.jdbc.Driver hikari: # 连接池参数 maximum-pool-size: 10

通过JPA操作数据库

@Entity public class User { @Id @GeneratedValue private Long id; private String name; // Getter/Setter省略 } @Repository public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); }


常见问题排查

错误现象 解决方案
No suitable driver found 检查URL格式或驱动JAR是否缺失
Access denied for user 核对用户名/密码及数据库权限
连接超时 验证网络、防火墙及数据库服务状态


总结与学习路径

  1. 基础掌握:JDBC六步流程 + PreparedStatement安全机制。
  2. 进阶优化:连接池配置(HikariCP/Druid) + 配置文件加密。
  3. 框架集成:Spring Boot + JPA/MyBatis简化开发。
  4. 扩展学习
    • 分布式事务(JTA)
    • 响应式数据库访问(R2DBC)
    • 多数据源动态路由

权威引用

如何用Java连接数据库 第3张

0