2、创建jdbc项目,实现数据库连接,并完成如下功能: 1)输入一个部门]的信息,完成部门的添加; 2)根据部门编号针对部门门名称进行修改的功能:输入部门编号和修改 名称的修改! 3)输入一个员工的信息,完成员工的添加。 4)完成如下查询: 4.1)查询所有员工信息; 4.2)输入姓名,查询员工信息; 3、创建jdbc项目,使用逻辑三层结构,把第2题的功能重新实现一遍;
时间: 2023-12-03 13:43:27 浏览: 115
很高兴为您解答这个问题。
首先,需要在项目中引入 JDBC 驱动程序,然后创建一个连接到数据库的 Connection 对象。以下是一个简单的示例:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USER = "root";
private static final String PASSWORD = "root";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
```
上述代码将会创建一个连接到 MySQL 数据库的 Connection 对象。在这个示例中,我们使用了 MySQL 数据库,但是您可以根据需要替换为其他数据库。
接下来,我们可以创建一个 DAO 类来执行数据库操作。以下是一个简单的示例:
```java
import java.sql.*;
public class DeptDAO {
private Connection conn;
public DeptDAO(Connection conn) {
this.conn = conn;
}
public void addDept(Dept dept) throws SQLException {
String sql = "INSERT INTO dept (dept_no, dept_name) VALUES (?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, dept.getDeptNo());
stmt.setString(2, dept.getDeptName());
stmt.executeUpdate();
}
public void updateDept(int deptNo, String deptName) throws SQLException {
String sql = "UPDATE dept SET dept_name = ? WHERE dept_no = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, deptName);
stmt.setInt(2, deptNo);
stmt.executeUpdate();
}
public void addEmp(Employee emp) throws SQLException {
String sql = "INSERT INTO emp (emp_no, emp_name, dept_no) VALUES (?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, emp.getEmpNo());
stmt.setString(2, emp.getEmpName());
stmt.setInt(3, emp.getDeptNo());
stmt.executeUpdate();
}
public List<Employee> getAllEmps() throws SQLException {
String sql = "SELECT * FROM emp";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
List<Employee> emps = new ArrayList<>();
while (rs.next()) {
Employee emp = new Employee();
emp.setEmpNo(rs.getInt("emp_no"));
emp.setEmpName(rs.getString("emp_name"));
emp.setDeptNo(rs.getInt("dept_no"));
emps.add(emp);
}
return emps;
}
public Employee getEmpByName(String empName) throws SQLException {
String sql = "SELECT * FROM emp WHERE emp_name = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, empName);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
Employee emp = new Employee();
emp.setEmpNo(rs.getInt("emp_no"));
emp.setEmpName(rs.getString("emp_name"));
emp.setDeptNo(rs.getInt("dept_no"));
return emp;
} else {
return null;
}
}
}
```
上述代码将会创建一个 DAO 类,用于执行与部门和员工相关的数据库操作。在这个示例中,我们定义了 addDept、updateDept、addEmp、getAllEmps 和 getEmpByName 方法。
最后,我们可以创建一个 Service 类,用于将 DAO 类与界面逻辑分离。以下是一个简单的示例:
```java
public class HRService {
private DeptDAO deptDAO;
private EmployeeDAO empDAO;
public HRService() throws SQLException {
Connection conn = DBUtil.getConnection();
this.deptDAO = new DeptDAO(conn);
this.empDAO = new EmployeeDAO(conn);
}
public void addDept(Dept dept) throws SQLException {
deptDAO.addDept(dept);
}
public void updateDept(int deptNo, String deptName) throws SQLException {
deptDAO.updateDept(deptNo, deptName);
}
public void addEmp(Employee emp) throws SQLException {
empDAO.addEmp(emp);
}
public List<Employee> getAllEmps() throws SQLException {
return empDAO.getAllEmps();
}
public Employee getEmpByName(String empName) throws SQLException {
return empDAO.getEmpByName(empName);
}
}
```
上述代码将会创建一个 Service 类,用于将 DAO 类与界面逻辑分离。在这个示例中,我们定义了 addDept、updateDept、addEmp、getAllEmps 和 getEmpByName 方法。
最后,我们可以在界面上使用 Service 类来执行数据库操作。以下是一个简单的示例:
```java
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try {
HRService hrService = new HRService();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1. Add department");
System.out.println("2. Update department");
System.out.println("3. Add employee");
System.out.println("4. Get all employees");
System.out.println("5. Get employee by name");
System.out.println("0. Exit");
System.out.print("Please enter your choice: ");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.print("Enter department number: ");
int deptNo = scanner.nextInt();
System.out.print("Enter department name: ");
String deptName = scanner.next();
hrService.addDept(new Dept(deptNo, deptName));
break;
case 2:
System.out.print("Enter department number: ");
deptNo = scanner.nextInt();
System.out.print("Enter new department name: ");
deptName = scanner.next();
hrService.updateDept(deptNo, deptName);
break;
case 3:
System.out.print("Enter employee number: ");
int empNo = scanner.nextInt();
System.out.print("Enter employee name: ");
String empName = scanner.next();
System.out.print("Enter department number: ");
deptNo = scanner.nextInt();
hrService.addEmp(new Employee(empNo, empName, deptNo));
break;
case 4:
List<Employee> emps = hrService.getAllEmps();
for (Employee emp : emps) {
System.out.println(emp.getEmpNo() + "\t" + emp.getEmpName() + "\t" + emp.getDeptNo());
}
break;
case 5:
System.out.print("Enter employee name: ");
empName = scanner.next();
Employee emp = hrService.getEmpByName(empName);
if (emp != null) {
System.out.println(emp.getEmpNo() + "\t" + emp.getEmpName() + "\t" + emp.getDeptNo());
} else {
System.out.println("Employee not found");
}
break;
case 0:
System.exit(0);
break;
default:
System.out.println("Invalid choice");
break;
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
上述代码将会创建一个简单的控制台界面,用于执行与部门和员工相关的数据库操作。在这个示例中,我们使用了 Scanner 类来读取用户输入,并使用 HRService 类来执行数据库操作。
希望这个答案能够对您有所帮助。
阅读全文