家里用的智能电表最近出了个小问题,数据老是不同步。维修师傅说可能是后台没连上数据库。我一听,这不就是程序连数据库的事儿吗?其实,很多小工具、管理系统,甚至是自己写的记账小程序,只要涉及存数据,都绕不开“通过JDBC连接数据库”这件事。
什么是JDBC
JDBC 是 Java Database Connectivity 的缩写,简单说,就是让 Java 程序能和数据库“说话”的一套标准接口。不管你是用 MySQL、PostgreSQL 还是 Oracle,只要装对了驱动,Java 就能通过 JDBC 把数据存进去、取出来。
准备工作不能少
想连数据库,光有代码不行。得先确认几件事:数据库是不是开着?网络能不能通?用户名和密码对不对?比如你本地装了个 MySQL,端口默认是 3306,那你的程序就得知道这个地址才能连上去。
添加依赖和驱动
如果你用的是 Maven 项目,在 pom.xml 里加一行:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
如果不是 Maven,那就去官网下载对应的 JAR 包,手动加到项目里。
写代码连上去
下面是个最简单的例子,连本地的 MySQL 数据库:
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnect {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/testdb";
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());
}
}
}
注意 URL 的格式:jdbc:数据库类型://地址:端口/数据库名。如果连的是远程服务器,把 localhost 换成 IP 就行。
常见问题出在哪
连不上?先看看错误提示。如果是 “Unknown database”,说明库名写错了;如果是 “Access denied”,八成是密码不对或者用户没权限;如果是 “Connection refused”,可能是数据库没开,或者防火墙拦了。
还有个容易忽略的点:MySQL 8 之后推荐用新的驱动类,URL 里最好加上时区设置,比如:
jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC
不然可能报时区相关的错。
小项目也能用得上
前阵子帮小区物业写了个停车登记的小工具,数据就存在本地数据库里。每次车主来登记,信息一填,点保存,背后就是 JDBC 在干活。虽然看起来不起眼,但少了它,数据根本存不住。
只要你用 Java 做点带数据存储的小项目,学会通过JDBC连接数据库,是最基础也最关键的一步。