数据库准备工作
创建一张MySQL的表
CREATE TABLE `user` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户名',
`age` int DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
插入一些测试数据信息
INSERT INTO `user` (`id`, `name`, `age`) VALUES (1, 'user1', 11);
INSERT INTO `user` (`id`, `name`, `age`) VALUES (2, 'user2', 19);
INSERT INTO `user` (`id`, `name`, `age`) VALUES (3, 'user3', 16);
项目
增加依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
代码
package org.example;
import java.sql.*;
public class Main {
private static Connection conn;
private static Statement stmt;
static { //加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
//创建Statement对象
stmt = conn.createStatement();
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public static void deleteOne(int id) throws SQLException {
String sql = "delete from user where id=" + id;
int result = stmt.executeUpdate(sql);
if (result > 0) {
System.out.println("删除成功");
}
}
public static void updateOne(int age, int id) throws SQLException {
String sql = "update user set age=" + age + " where id=" + id;
int result = stmt.executeUpdate(sql);
if (result > 0) {
System.out.println("修改成功");
}
}
public static void insertOne(int id, String name, int age) throws SQLException {
String sql = "insert into user(id,name,age) values(" + id + ", '" + name + "', " + age + ")";
int result = stmt.executeUpdate(sql);
if (result > 0) {
System.out.println("添加成功");
}
}
public static void queryById(int id) throws SQLException {
String queryAllSql = "select * from user where id=" + id;
ResultSet rs = stmt.executeQuery(queryAllSql);
boolean isMatch = false;
while (rs.next()) {
isMatch = true;
System.out.println("id: " + rs.getInt("id")
+ " name: " + rs.getString("name")
+ " age: " + rs.getInt("age"));
}
if (!isMatch) {
System.out.println("数据查询为空");
}
}
public static void queryAllUser() throws SQLException {
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println("id: " + rs.getInt("id")
+ " name: " + rs.getString("name")
+ " age: " + rs.getInt("age"));
}
}
public static void main(String[] args) throws SQLException{
queryAllUser();
insertOne(4, "user4", 20);
queryById(4);
updateOne(33, 4);
queryById(4);
deleteOne(4);
queryById(4);
System.out.println("Hello world!");
}
}
测试
小结
JDBC API提供了一套标准的接口和类,以帮助开发人员使用Java与数据库进行通信。这些类和接口包括:
- DriverManager类:该类为应用程序提供了一个标准的接口,以便连接到一个或多个数据库。它还提供了一组静态方法,以注册和注销驱动程序。
- Connection接口:该接口表示与数据库的连接。可以使用此接口执行各种数据库操作。
- Statement接口:该接口表示可以执行在数据库中执行的SQL语句。可以使用此接口执行各种操作,如查询、插入、更新和删除数据。
- ResultSet接口:该接口表示查询结果集。可使用此接口从数据库中检索查询结果。
- PreparedStatement接口:该接口继承了Statement接口,并提供了更高效和安全的SQL语句执行功能。使用此接口可以预编译SQL语句。