在java中使用mysql数据库-入门实战篇
2023-12-13 09:48:58
与其讲概念,不如直接上手实践
注释很详细,看注释足以理解全篇代码
这里带着大家从头到尾做一个简单的学生信息管理系统,前面先分模块,最后会附上源码便于复制
在开始之前先确定自己的jdbc有没有安装:
如果没有请先看这篇博文:jdbc的安装与配置
一.建表部分
CREATE DATABASE student_db;--创建数据库
USE student_db; -- 切换到student_db数据库
--建表
CREATE TABLE student (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL
);
二.在该管理系统中需要引入的包
混个眼熟就行,缺啥包可以使用编译器的自动补全
mport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
三.定义一下登入数据库需要用到的参数
//URL
//useSSL=false禁用SSL检查
//serverTimezone=Asia/Shanghai设置时区
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/student_db?useSSL=false&serverTimezone=Asia/Shanghai";
//用户名
private static final String USERNAME = "root";
//密钥
private static final String PASSWORD = "1234";
四.定义扫描器并连接数据库
Scanner scanner = new Scanner(System.in);
// 连接到数据库
Scanner scanner = new Scanner(System.in);
// 连接到数据库
//通过使用Java 7引入的try-with-resources语句,可以确保在代码块执行完成后,自动关闭连接对象connection
//所以不需要手动关闭数据库连接
try (Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD)) {
System.out.println("连接到数据库");
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 添加学生");
System.out.println("2. 删除学生");
System.out.println("3. 修改学生信息");
System.out.println("4. 查找学生");
System.out.println("0. 退出");
int choice = scanner.nextInt();
scanner.nextLine(); // 清除输入缓冲区换行符
switch (choice) {
case 1:
addStudent(connection, scanner);
break;
case 2:
deleteStudent(connection, scanner);
break;
case 3:
updateStudent(connection, scanner);
break;
case 4:
findStudent(connection, scanner);
break;
case 0:
System.out.println("退出程序");
return;
default:
System.out.println("无效选择");
break;
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
五.添加学生功能实现函数
/**
* 向数据库添加新学生。
*
* @param connection 数据库连接
* @param scanner 用于用户输入的扫描器
* @throws SQLException 如果发生数据库错误
*/
private static void addStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生年龄:");
int age = scanner.nextInt();
// 准备 SQL 语句,插入学生姓名和年龄
String sql = "INSERT INTO student (name, age) VALUES (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生姓名和年龄
statement.setString(1, name);
statement.setInt(2, age);
// 执行更新操作,并获取受影响的行数
int rowsInserted = statement.executeUpdate();
// 检查是否成功插入学生
if (rowsInserted > 0) {
System.out.println("学生添加成功");
} else {
System.out.println("学生添加失败");
}
}
}
六.删除学生功能实现函数
/**
* 从数据库中删除学生的方法。
*
* @param connection 数据库连接
* @param scanner 用于用户输入的扫描器
* @throws SQLException 如果发生数据库错误
*/
private static void deleteStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入要删除的学生ID:");
int id = scanner.nextInt();
// 准备 SQL 语句,根据学生ID删除学生
String sql = "DELETE FROM student WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生ID
statement.setInt(1, id);
// 执行更新操作,并获取受影响的行数
int rowsDeleted = statement.executeUpdate();
// 检查是否成功删除学生
if (rowsDeleted > 0) {
System.out.println("学生删除成功");
} else {
System.out.println("学生删除失败");
}
}
}
七.修改学生功能实现函数
/**
* 更新数据库中的学生信息的方法。
*
* @param connection 数据库连接。
* @param scanner 用于用户输入的扫描器。
* @throws SQLException 如果发生数据库错误。
*/
private static void updateStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入要修改的学生ID:");
int id = scanner.nextInt();
scanner.nextLine(); // 清除输入缓冲区换行符
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生年龄:");
int age = scanner.nextInt();
// 准备 SQL 语句,更新学生姓名和年龄
String sql = "UPDATE student SET name = ?, age = ? WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生姓名、年龄和ID
statement.setString(1, name);
statement.setInt(2, age);
statement.setInt(3, id);
// 执行更新操作,并获取受影响的行数
int rowsUpdated = statement.executeUpdate();
// 检查是否成功修改学生信息
if (rowsUpdated > 0) {
System.out.println("学生信息修改成功");
} else {
System.out.println("学生信息修改失败");
}
}
}
八.查找学生功能实现函数
/**
* 在数据库中查找学生的方法
*
* @param connection 数据库连接
* @param scanner 用于用户输入的扫描器
* @throws SQLException 如果发生数据库错误
*/
private static void findStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入要查找的学生ID:");
int id = scanner.nextInt();
// 准备 SQL 语句,根据学生ID查询学生信息
String sql = "SELECT * FROM student WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生ID
statement.setInt(1, id);
// 执行查询操作,获取结果集
ResultSet resultSet = statement.executeQuery();
// 检查是否找到该学生
if (resultSet.next()) {
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("学生ID:" + id);
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
} else {
System.out.println("找不到该学生");
}
}
}
九.源码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
/**
* 主类,用于管理学生数据库操作。
*/
public class Main {
//useSSL=false禁用SSL检查
//serverTimezone=Asia/Shanghai设置时区
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/student_db?useSSL=false&serverTimezone=Asia/Shanghai";
private static final String USERNAME = "root";
private static final String PASSWORD = "1234";
/**
* 主方法执行程序。
*
* @param args 命令行参数(在此应用程序中未使用)。
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 连接到数据库
//通过使用Java 7引入的try-with-resources语句,可以确保在代码块执行完成后,自动关闭连接对象connection
//所以不需要手动关闭数据库连接
try (Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD)) {
System.out.println("连接到数据库");
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 添加学生");
System.out.println("2. 删除学生");
System.out.println("3. 修改学生信息");
System.out.println("4. 查找学生");
System.out.println("0. 退出");
int choice = scanner.nextInt();
scanner.nextLine(); // 清除输入缓冲区换行符
switch (choice) {
case 1:
addStudent(connection, scanner);
break;
case 2:
deleteStudent(connection, scanner);
break;
case 3:
updateStudent(connection, scanner);
break;
case 4:
findStudent(connection, scanner);
break;
case 0:
System.out.println("退出程序");
return;
default:
System.out.println("无效选择");
break;
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 向数据库添加新学生。
*
* @param connection 数据库连接。
* @param scanner 用于用户输入的扫描器。
* @throws SQLException 如果发生数据库错误。
*/
private static void addStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生年龄:");
int age = scanner.nextInt();
// 准备 SQL 语句,插入学生姓名和年龄
String sql = "INSERT INTO student (name, age) VALUES (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生姓名和年龄
statement.setString(1, name);
statement.setInt(2, age);
// 执行更新操作,并获取受影响的行数
int rowsInserted = statement.executeUpdate();
// 检查是否成功插入学生
if (rowsInserted > 0) {
System.out.println("学生添加成功");
} else {
System.out.println("学生添加失败");
}
}
}
/**
* 从数据库中删除学生的方法。
*
* @param connection 数据库连接。
* @param scanner 用于用户输入的扫描器。
* @throws SQLException 如果发生数据库错误。
*/
private static void deleteStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入要删除的学生ID:");
int id = scanner.nextInt();
// 准备 SQL 语句,根据学生ID删除学生
String sql = "DELETE FROM student WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生ID
statement.setInt(1, id);
// 执行更新操作,并获取受影响的行数
int rowsDeleted = statement.executeUpdate();
// 检查是否成功删除学生
if (rowsDeleted > 0) {
System.out.println("学生删除成功");
} else {
System.out.println("学生删除失败");
}
}
}
/**
* 更新数据库中的学生信息的方法。
*
* @param connection 数据库连接。
* @param scanner 用于用户输入的扫描器。
* @throws SQLException 如果发生数据库错误。
*/
private static void updateStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入要修改的学生ID:");
int id = scanner.nextInt();
scanner.nextLine(); // 清除输入缓冲区换行符
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生年龄:");
int age = scanner.nextInt();
// 准备 SQL 语句,更新学生姓名和年龄
String sql = "UPDATE student SET name = ?, age = ? WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生姓名、年龄和ID
statement.setString(1, name);
statement.setInt(2, age);
statement.setInt(3, id);
// 执行更新操作,并获取受影响的行数
int rowsUpdated = statement.executeUpdate();
// 检查是否成功修改学生信息
if (rowsUpdated > 0) {
System.out.println("学生信息修改成功");
} else {
System.out.println("学生信息修改失败");
}
}
}
/**
* 在数据库中查找学生的方法。
*
* @param connection 数据库连接。
* @param scanner 用于用户输入的扫描器。
* @throws SQLException 如果发生数据库错误。
*/
private static void findStudent(Connection connection, Scanner scanner) throws SQLException {
System.out.println("请输入要查找的学生ID:");
int id = scanner.nextInt();
// 准备 SQL 语句,根据学生ID查询学生信息
String sql = "SELECT * FROM student WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
// 设置参数,绑定学生ID
statement.setInt(1, id);
// 执行查询操作,获取结果集
ResultSet resultSet = statement.executeQuery();
// 检查是否找到该学生
if (resultSet.next()) {
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("学生ID:" + id);
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
} else {
System.out.println("找不到该学生");
}
}
}
}
文章来源:https://blog.csdn.net/m0_73756108/article/details/134861028
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!