访问构造函数中未包含的方法

时间:2017-03-31 16:01:51

标签: java mysql

我创建了一个连接数据库的类,并进行各种插入,删除,修改等...

包含一个数组以显示所有内容。在数据库中自动创建一个ID,所以我不输入它,但我仍然希望数组从每列输出ID。我看到的代码如下所示,如果我在cJourneys之前插入cID等,我得到的构造函数是未定义的。想要弄清楚如何从数据库访问ID,每次使用数组调用它。

public Car(String cLicenseIn, int cJourneysIn, String cUsernameIn, String cPasswordIn) {
    cLicense = cLicenseIn;
    cJourneys = cJourneysIn;
    cUsername = cUsernameIn;
    cPassword = cPasswordIn;

}

// Display all Vehicles
public ArrayList<Car> getAllCar() {
    ArrayList<Car> AllCar = new ArrayList<Car>();
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url + dbName, userName, password);
        statement = conn.createStatement();
        resultSet = statement.executeQuery("select * from eflow.Registration");

        while (resultSet.next()) {
            Car nextCar = new Car(resultSet.getString("cLicense"), resultSet.getInt("cJourneys"),
                    resultSet.getString("cUsername"), resultSet.getString("cPassword").toString());
            AllCar.add(nextCar);
        }
        conn.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return AllCar;
}

1 个答案:

答案 0 :(得分:2)

类似方法,构造函数也可以在Java中重载(接受不同的参数集),因此您可以重载接受id的Car构造函数,即,您将拥有Car类的两个构造函数。

带有id参数的

Car构造函数(每当您想从数据库创建public Car(String id, String cLicenseIn, int cJourneysIn, String cUsernameIn, String cPasswordIn) { //set fields here } 时使用此选项):

Car

Car没有id参数的构造函数(每当您想要从用户输入创建public Car(String cLicenseIn, int cJourneysIn, String cUsernameIn, String cPasswordIn) { //set fields here } 时使用此选项):

public ArrayList<Car> getAllCar() {
    ArrayList<Car> AllCar = new ArrayList<Car>();
    try {
           //add your existing code here

            Car nextCar = new Car(resultSet.getString("ID"), ,
               resultSet.getString("cLicense"), 
               resultSet.getInt("cJourneys"),
               resultSet.getString("cUsername"),
               resultSet.getString("cPassword").toString());
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
       //add null checks and close the resources
       statement.close();
       conn.close();
       resultSet.close();
    }
    return AllCar;
}

getAllCar()方法:

finally

此外,我强烈建议您关闭try块中的资源或使用{{1}}资源,否则最终会导致资源泄漏

相关问题