一、简介
JDBC全称叫做Java database connectivity,直译为Java语言的数据库连接。它主要针对于支持结构化查询语言(SQL)的数据源,与Java程序连接并操作数据。
JDBC的基础文档:https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html
Java doc文档:https://blog.fondme.cn/apidoc/jdk-1.8-google/java/sql/package-frame.html
二、代码示例
这里以本地mysql数据库为例,准备一张"t_user"表
DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `age` ) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of t_user -- ---------------------------- , );
maven工程,引入依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency>
Java代码示例
import java.sql.*; public class JdbcDemo { static { try { // 加载驱动,并添加到DriverManager的list集合中 Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) throws SQLException { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; try { // 获取连接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=true", "root", "password"); // 创建statement对象,预编译SQL语句 statement = connection.prepareStatement("SELECT * FROM t_user WHERE id = ?"); // 设置参数 statement.setLong(1, 1); // 执行查询语句 resultSet = statement.executeQuery(); // 遍历查询结果 while (resultSet.next()) { // 打印字段 System.out.println(resultSet.getString(1)); System.out.println(resultSet.getString(2)); System.out.println(resultSet.getString(3)); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 resultSet.close(); statement.close(); connection.close(); } } }
执行结果
1 lay 23
Java代码示例中使用了PreparedStatement,对SQL进行预编译操作,SQL会被发送到dbms系统进行编译。预编译操作可以防止SQL注入,提升数据的安全性。
另外,新版的JDBC会自动加载驱动,可以不用显示地去Class.forName来加载驱动了。