java连接数据库的语句怎么写
- 后端开发
- 2025-07-23
- 7
Java连接数据库的核心步骤包括加载驱动、建立连接、执行操作等,以下是详细说明:
Java连接数据库的核心步骤
| 步骤 | 实现方式 | 说明 |
|---|---|---|
| 加载驱动 | Class.forName("com.mysql.cj.jdbc.Driver") | 通过反射加载数据库驱动类,触发注册驱动到DriverManager。 |
| 建立连接 | DriverManager.getConnection(url, user, password) | URL格式因数据库类型而异(如MySQL为jdbc:mysql://host:port/dbname)。 |
| 执行操作 | Statement或PreparedStatement | 普通语句直接执行SQL,预处理语句支持参数化查询,防止SQL载入。 |
| 关闭资源 | connection.close() | 必须手动关闭连接、语句和结果集,建议使用try-with-resources语法。 |
不同数据库的驱动与连接字符串
| 数据库类型 | 驱动依赖 | 连接字符串格式 | 示例 |
|---|---|---|---|
| MySQL | mysql-connector-java | jdbc:mysql://host:port/dbname?param=value | jdbc:mysql://localhost:3306/test |
| PostgreSQL | postgresql | jdbc:postgresql://host:port/dbname | jdbc:postgresql://localhost:5432/test |
| Oracle | ojdbc | jdbc:oracle:thin:@host:port:service | jdbc:oracle:thin:@localhost:1521:orcl |
| SQL Server | mssql-jdbc | jdbc:sqlserver://host:port;databaseName=db | jdbc:sqlserver://localhost:1433;databaseName=test |
| SQLite | sqlite-jdbc | jdbc:sqlite:filepath | jdbc:sqlite:src/test.db |
完整代码示例(以MySQL为例)
import java.sql.; public class DatabaseConnection { public static void main(String[] args) { // 配置参数 String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "123456"; // 加载驱动(可选,JDBC 4.0+自动加载) try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("驱动加载失败!"); e.printStackTrace(); return; } // 建立连接并执行操作 try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { String sql = "SELECT FROM users"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { System.out.println(rs.getString("username")); } } catch (SQLException e) { e.printStackTrace(); } } }
进阶优化与最佳实践
-
使用连接池
直接使用DriverManager每次创建连接效率低,推荐使用连接池(如HikariCP、Druid):
-
参数化查询
避免字符串拼接导致的SQL载入:
String sql = "SELECT FROM users WHERE id = ?"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setInt(1, userId); ResultSet rs = pstmt.executeQuery(); }
-
异常处理


- SQLException:捕获数据库操作异常(如连接失败、语法错误)。
- ClassNotFoundException:驱动类未找到(需检查依赖库)。
-
安全性建议
- 密码应通过配置文件或环境变量管理,避免硬编码。
- 使用SSL加密连接(如MySQL的useSSL=true)。
- 原因:未正确引入数据库驱动依赖。
- 解决:在Maven项目中添加对应依赖(如MySQL的mysql-connector-java),或手动将驱动JAR包加入类路径。
- 检查步骤:
- 确认数据库服务已启动,且主机、端口、用户名、密码正确。
- 检查防火墙或网络策略是否允许访问数据库端口(如MySQL默认3306)。
- 测试连接字符串格式是否正确(如PostgreSQL
常见问题与解决方案
FAQs:
问题:ClassNotFoundException如何解决?
问题:连接超时或失败如何排查?