我创建了一个类来连接到数据库并执行各种插入、删除、更改等操作...
包含一个数组来显示所有内容。在数据库中,会自动创建一个 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;
}
最佳答案
与方法一样,构造函数也可以在 Java 中重载(接受不同的参数集),因此您可以重载 Car
也接受 id 的构造函数,即,您的 Car
将有两个构造函数类。
<强> Car
带有 id 参数的构造函数(当您想从数据库创建 Car
时使用它):
public Car(String id, String cLicenseIn,
int cJourneysIn, String cUsernameIn, String cPasswordIn) {
//set fields here
}
<强> Car
不带 id 参数的构造函数(每当您想根据用户输入创建 Car
时,请使用此构造函数):
public Car(String cLicenseIn, int cJourneysIn,
String cUsernameIn, String cPasswordIn) {
//set fields here
}
getAllCar() 方法:
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;
}
另外,我强烈建议您关闭finally
中的资源。阻止或使用 try
资源,否则最终会导致资源泄漏。
关于java - 访问构造函数中未包含的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43145042/