java如何实现删除部门中有子部门的部门时会提示需要删除子部门
时间: 2024-01-18 15:02:44 浏览: 35
在Java中实现删除部门时需要检查该部门是否存在子部门,如果存在则需要提示用户需要先删除子部门才能进行删除操作。
可以通过以下步骤实现:
1. 查询该部门是否存在子部门,可以通过查询数据库中该部门的下级部门数量来实现。
2. 如果存在子部门,则提示用户需要先删除子部门,然后结束操作。
3. 如果不存在子部门,则执行删除操作,删除该部门及其关联的数据。
示例代码如下:
```java
public void deleteDepartment(int departmentId) {
int subDepartmentCount = departmentDao.getSubDepartmentCount(departmentId);
if (subDepartmentCount > 0) {
System.out.println("该部门存在子部门,请先删除子部门再进行删除操作");
return;
}
departmentDao.deleteDepartmentById(departmentId);
}
```
其中,`departmentDao`是一个部门数据访问对象,`getSubDepartmentCount`方法用于查询指定部门的下级部门数量,`deleteDepartmentById`方法用于删除指定部门及其关联的数据。
相关问题
java部门员工管理系统
java部门员工管理系统是一个用Java编写的系统,它可以实现人事管理和部门管理功能。在该系统中,有三个主要的类:STSystem、Department和Employee。
STSystem类是系统的入口类,它包含了main方法。在该类中,通过创建Modules对象,实现了系统的模块管理功能。用户可以根据提示选择不同的操作,如人事管理、部门管理或退出系统。
Department类是部门的实体类,包含了部门的编号、名称和员工数等属性。通过构造方法和相应的get和set方法,可以对部门信息进行操作。
Employee类是员工的实体类,包含了员工的姓名、性别、年龄、薪资和所在部门编号等属性。同样,可以通过get和set方法对员工信息进行操作。
这个部门员工管理系统可以通过不同的功能模块实现员工信息的录入、查询和修改,部门信息的添加和删除等操作,从而进行有效的人事管理和部门管理。
基本信息管理 基本信息管理包括删除员工信息和查询基础信息等操作。同时,也需要维护部门信息,包括增加、修改、删除和查询等操作。 删除员工信息(Delete Employee) 用户在输入区域中输入需要删除的员工的编号,系统会查询该员工的基本信息并在表单中展示。用户点击“确认”按钮后,系统会提示确认是否删除该员工信息。如果用户确认删除,则执行删除操作;否则取消删除操作。 查询员工信息(Query Employee) 提供两种查询方式:根据姓名查询和根据部门查询。用户可以在输入区域中选择需要查询的方式,并输入相关信息。系统会查询符合条件的所有员工信息并在输出区域中展示。 增加部门信息(Add Department) 在输入区域中展示一个表单,包含需要添加的部门的所有信息(一级部门名称、二级部门名称)。用户可以在表单中填写信息,并点击“确认”按钮完成添加操作。 修改部门信息(Modify Department) 用户先在输入区域中输入需要修改的部门的编号,系统会查询该部门 请用javaGUI与mysql的连接用代码实现上述问题
以下是使用Java GUI和MySQL连接实现基本信息管理的示例代码:
1. 建立数据库连接
在Java程序中,我们需要使用JDBC驱动程序来连接MySQL数据库。因此,我们需要下载并导入MySQL JDBC驱动包。我们还需要在MySQL中创建一个名为"employee_management"的数据库,并在其中创建两张表:employee和department。
在程序中,我们需要定义以下变量:
```java
private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/employee_management";
private static final String DB_USERNAME = "root";
private static final String DB_PASSWORD = "password";
private Connection conn = null;
private Statement stmt = null;
```
然后,我们可以在程序初始化时建立数据库连接:
```java
public void init() {
try {
Class.forName(DB_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
stmt = conn.createStatement();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
```
2. 删除员工信息
在Java GUI中,我们可以使用JOptionPane.showConfirmDialog()方法来显示确认对话框。如果用户点击“确认”按钮,则返回值为0,否则为1。
下面是删除员工信息的代码:
```java
public void deleteEmployee(int id) {
try {
String query = "SELECT * FROM employee WHERE id=" + id;
ResultSet rs = stmt.executeQuery(query);
if (!rs.next()) {
JOptionPane.showMessageDialog(null, "该员工不存在!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
String name = rs.getString("name");
int confirm = JOptionPane.showConfirmDialog(null, "确认删除员工 " + name + " 的信息吗?", "确认", JOptionPane.YES_NO_OPTION);
if (confirm == 0) {
String deleteQuery = "DELETE FROM employee WHERE id=" + id;
stmt.executeUpdate(deleteQuery);
JOptionPane.showMessageDialog(null, "员工 " + name + " 的信息已被删除。", "成功", JOptionPane.INFORMATION_MESSAGE);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
```
3. 查询员工信息
查询员工信息需要根据用户输入的条件构建SQL查询语句,并将查询结果显示在表格中。以下是查询员工信息的代码:
```java
public void queryEmployee(String name, String department) {
try {
String query = "SELECT * FROM employee WHERE 1=1";
if (!name.equals("")) {
query += " AND name LIKE '%" + name + "%'";
}
if (!department.equals("")) {
query += " AND department='" + department + "'";
}
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int numColumns = rsmd.getColumnCount();
Vector<String> columnNames = new Vector<String>();
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
for (int i = 1; i <= numColumns; i++) {
columnNames.add(rsmd.getColumnName(i));
}
while (rs.next()) {
Vector<Object> row = new Vector<Object>();
for (int i = 1; i <= numColumns; i++) {
row.add(rs.getObject(i));
}
data.add(row);
}
JTable table = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
JFrame frame = new JFrame("员工信息查询结果");
frame.getContentPane().add(scrollPane);
frame.pack();
frame.setVisible(true);
} catch (SQLException e) {
e.printStackTrace();
}
}
```
4. 增加部门信息
增加部门信息需要使用JOptionPane.showInputDialog()方法来获取用户输入的数据。然后,我们可以使用PreparedStatement对象来执行SQL插入语句,避免SQL注入攻击。
以下是增加部门信息的代码:
```java
public void addDepartment(String parentDepartment, String subDepartment) {
try {
String insertQuery = "INSERT INTO department (parent_department, sub_department) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(insertQuery);
ps.setString(1, parentDepartment);
ps.setString(2, subDepartment);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "部门 " + parentDepartment + "/" + subDepartment + " 已添加。", "成功", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
e.printStackTrace();
}
}
```
5. 修改部门信息
修改部门信息需要先查询数据库中是否存在该部门,如果存在则使用JOptionPane.showInputDialog()方法获取用户输入的新数据,并使用PreparedStatement对象执行SQL更新语句。
以下是修改部门信息的代码:
```java
public void modifyDepartment(int id) {
try {
String query = "SELECT * FROM department WHERE id=" + id;
ResultSet rs = stmt.executeQuery(query);
if (!rs.next()) {
JOptionPane.showMessageDialog(null, "该部门不存在!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
String parentDepartment = rs.getString("parent_department");
String subDepartment = rs.getString("sub_department");
String newParentDepartment = JOptionPane.showInputDialog(null, "请输入一级部门名称:", parentDepartment);
String newSubDepartment = JOptionPane.showInputDialog(null, "请输入二级部门名称:", subDepartment);
String updateQuery = "UPDATE department SET parent_department=?, sub_department=? WHERE id=?";
PreparedStatement ps = conn.prepareStatement(updateQuery);
ps.setString(1, newParentDepartment);
ps.setString(2, newSubDepartment);
ps.setInt(3, id);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "部门信息已更新。", "成功", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
e.printStackTrace();
}
}
```
以上是使用Java GUI和MySQL连接实现基本信息管理的示例代码。请根据自己的实际需求进行修改和优化。