应根据场景选择数据库:开发调试用h2(嵌入式、免安装),生产环境用mysql或postgresql(需独立安装);jdbc驱动通过maven引入并注意版本匹配;url格式因库而异,须严格按规范书写。

Java 本身不“安装数据库”,它只是通过 JDBC 驱动连接外部数据库服务。真正要装的是数据库服务器(比如 MySQL、PostgreSQL 或轻量级的 H2),而不是 Java 自带的某种数据库。
该装哪个数据库?看你的使用场景
开发调试阶段,推荐直接用 H2 —— 它是纯 Java 实现的嵌入式数据库,无需单独安装服务,加个依赖就能跑;生产环境则选 MySQL 或 PostgreSQL,它们需要独立安装和运行服务进程。
- 想快速验证 DAO 层逻辑?用
H2,内存模式启动即用,jdbc:h2:mem:testdb - 要模拟真实部署结构?装
MySQL 8.0+,注意默认启用 caching_sha2_password 认证插件,老版 JDBC 驱动可能连不上 - Mac 用户用 Homebrew 装 PostgreSQL:
brew install postgresql,然后brew services start postgresql - Windows 用户建议用官方图形化安装包(如 MySQL Installer),勾选 “Add to PATH” 避免手动配环境变量
JDBC 驱动怎么加?别漏掉版本对齐
驱动不是“安装”进系统,而是作为依赖引入项目。Maven 里写错版本号是连接失败最常见原因。
- MySQL:用
mysql:mysql-connector-java:8.0.33(对应 MySQL 8.x);若连 MySQL 5.7,请降级到5.1.49 - H2:加
com.h2database:h2:2.2.224即可,无兼容性烦恼 - PostgreSQL:用
org.postgresql:postgresql:42.6.0,注意类名是org.postgresql.Driver,不是org.postgresql.jdbc.Driver - 别在
Class.forName("...")上浪费时间 —— JDBC 4.0+ 规范已支持自动注册,只要驱动 JAR 在 classpath 就行
Connection URL 写法差异大,拼错一个字符就报 Communications link failure
URL 不是通用格式,每个数据库语法不同,端口、参数、子协议都容易出错。
立即学习“Java免费学习笔记(深入)”;
- MySQL 示例:
jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true—— 注意&是 XML/HTML 实体,实际写配置时别漏转义 - H2 内存模式:
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE,否则 JVM 退出时库就丢了 - PostgreSQL:
jdbc:postgresql://localhost:5432/mydb?currentSchema=public,schema 参数小写,不能写成CurrentSchema - 本地没启服务?错误通常是
Connection refused或Connection timed out,先用telnet localhost 3306确认端口通不通
最容易被忽略的是数据库服务状态和用户权限。Java 连不上,八成不是代码问题,而是 mysql -u root -p 都登不进去,或者创建的用户没授权从 % 或 localhost 连接。H2 虽省事,但默认关闭 SQL 日志,加 ;TRACE_LEVEL_SYSTEM_OUT=2 才能看到执行语句。










