新手尝试使用Java ArrayList存储从数据库获取的ResultSet

ggk*_*ath 0 java arraylist

我有一个数据库服务器使用JDBC与Java应用程序服务器通信.我想将数据库ResultSet中的数据存储到Java变量中.

这是我的Java课程,HRPeople:

public class HRPeople {
    public int elements;
    public String[] FirstName;
    public String[] LastName;
    public String[] Email;
    public int[] Salary;
}
Run Code Online (Sandbox Code Playgroud)

我目前使用此类来存储ResultSet中的数据,如下所示:

query = "SELECT first_name, last_name, email, salary FROM HR.Employees where rownum < 6";
rset = stmt.executeQuery(query);
while (rset.next()) {
    returnHRdata.FirstName[ii] = rset.getString("first_name");
    returnHRdata.LastName[ii]  = rset.getString("last_name");
    returnHRdata.Email[ii]     = rset.getString("email");
    returnHRdata.Salary[ii]    = rset.getInt("salary");
    ii = ii + 1;
}
Run Code Online (Sandbox Code Playgroud)

上述场景的问题是原始数组要求我知道ResultSet中的行数,以便我可以正确初始化这些数组.所以我想要做的是使用ArrayList.如何修改上述方案来执行此操作?

这是我最初的尝试(这是否接近)?上面显示的HRPeople.java文件是否在此方案中使用?

query = "SELECT first_name, last_name, email, salary FROM HR.Employees where rownum < 6";
rset = stmt.executeQuery(query);
List<HRPeople> returnHRdata = new ArrayList<HRPeople>();
while (rset.next()) {
   returnHRdata.FirstName = rset.getString("first_name");
   returnHRdata.LastName  = rset.getString("last_name");
   returnHRdata.Email     = rset.getString("email");
   returnHRdata.Salary    = rset.getInt("salary");
   returnHRdata.add;
}
Run Code Online (Sandbox Code Playgroud)

更新1:

如果我添加以下代码,

return returnHRdata;
Run Code Online (Sandbox Code Playgroud)

我得到以下错误(任何想法为什么?):

myClass.java:213: incompatible types
found   : java.util.List<HRPerson>
required: java.util.ArrayList<HRPerson>
    return returnHRdata;
           ^
1 error
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 5

你可能想先定义一个像这样的HRPerson:

public class HRPerson {
    public String firstName;
    public String lastName;
    public String email;
    public int salary;
}
Run Code Online (Sandbox Code Playgroud)

然后你的主要代码如下:

query = "SELECT first_name, last_name, email, salary FROM HR.Employees where rownum < 6";
rset = stmt.executeQuery(query);
List<HRPerson> returnHRdata = new ArrayList<HRPerson>();
while (rset.next()) {
   HRPerson person = new HRPerson();
   person.firstName = rset.getString("first_name");
   person.lastName  = rset.getString("last_name");
   person.email     = rset.getString("email");
   person.salary    = rset.getInt("salary");
   returnHRdata.add(person);
}
Run Code Online (Sandbox Code Playgroud)