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

标签 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;
}

最佳答案

与方法一样,构造函数也可以在 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/

相关文章:

java - Java 如何获取网页的全部内容?

java - 密码错误时登录表单不显示验证消息

php - 如何从 PHP 7 中的嵌套包含文件中跳出 while 循环?

MySql 时区 JDBC 问题

php - ID 的唯一性

MYSQL - 如何查找某个日期范围内的记录

java - ConcurrentMap.putIfAbsent() 中提到的先前值是什么

Java - 使用 Wordnet 和 JWI 获取名词数组

php - 是否可以使用 Propel2 进行全文(匹配)查询?

java - 当元素移动到下一行时如何使用 FlowLayout 自动调整 JFrame 大小