Java - 实施 DAO

Java - Implementing DAO

我正在努力实施此 DOA class。我已经添加了 getConnectioncloseConnection 方法,但是,在添加 ArrayList<Employees> 时我总是会出错。我在下面添加了我的代码。我得到了一个 UML 图可以使用。

我做错了什么?有人能给我指出正确的方向吗?

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class EmployeeDAO {

    public static void main(String[] args) throws ClassNotFoundException {
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        Class.forName("org.sqlite.JDBC");

        try {
            String dbURL = "jdbc:sqlite:employeeDatabase.sqlite";
            con = DriverManager.getConnection(dbURL);
            st = con.createStatement();
            rs = st.executeQuery("SELECT * FROM employees;");

            while (rs.next()) {
                System.out.println(rs.getString("ID"));
                System.out.println(rs.getString("Name"));
                System.out.println(rs.getString("Gender"));
                System.out.println(rs.getString("DOB"));
                System.out.println(rs.getString("Address"));
                System.out.println(rs.getString("Postcode"));
                System.out.println(rs.getString("NIN"));
                System.out.println(rs.getString("JobTitle"));
                System.out.println(rs.getString("StartDate"));
                System.out.println(rs.getString("Salary"));
                System.out.println(rs.getString("Email"));
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (st != null) {
                    st.close();
                }
                if (con != null) {
                    con.close();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

}

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Employees cannot be resolved to a type
Illegal modifier for parameter selectallEmployees; only final is permitted
Employees cannot be resolved to a type at EmployeeDAO.main(EmployeeDAO.java:61)

我认为三角形是受保护的或 public 字段。红色框是私有字段。绿色圆圈都是 public 方法。顶部圆圈上的 C 是一个构造函数。

您的问题代码遵循 none 的...

根据你的图表,你的class需要这样开始写。

public class EmployeeDAO {

    private Connection con;
    private Statement st;
    private ResultSet rs;

    public EmployeeDAO() { 
        // TODO: Should initialize 'con', probably
    }

    public Statement getConnection() { 
        return st; // confused... getConnection should 'return con', no?
    }

    public void closeConnection() { 
        if (con != null) con.close();
    }

    public ArrayList<Employee> selectAllEmployees() {
        return new ArrayList<Employee>(); // TODO: replace with database stuff
    }

    // etc...

而且您的主要方法根本不应该在 class 中。

public class Controller {

    public Controller() { }

    public static void main(String[] args) {
        EmployeeDAO dao = new EmployeeDAO();
        List<Employee> emps = dao.selectAllEmployees();

        for (Employee e : emps) { 
            // etc...
        }
    }
}