我创建了一个连接数据库的类,并进行各种插入,删除,修改等...
包含一个数组以显示所有内容。在数据库中自动创建一个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;
}
答案 0 :(得分:2)
类似方法,构造函数也可以在Java中重载(接受不同的参数集),因此您可以重载接受id的Car
构造函数,即,您将拥有Car
类的两个构造函数。
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}}资源,否则最终会导致资源泄漏。