新手尝试使用Java ArrayList 存储从数据库获取的ResultSet [英] newbie attempt to use Java ArrayList to store ResultSet obtained from database
问题描述
我有一个使用 JDBC 与 Java 应用程序服务器通信的数据库服务器.我想将数据库 ResultSet 中的数据存储到 Java 变量中.
I have a database server communicating with a Java application server using JDBC. I want to store data from the database ResultSet into Java variables.
这是我的 Java 课程 HRPeople:
Here's my Java class, HRPeople:
public class HRPeople {
public int elements;
public String[] FirstName;
public String[] LastName;
public String[] Email;
public int[] Salary;
}
我目前使用这个类来存储来自 ResultSet 的数据,如下:
I currently use this class to store data from ResultSet, as follows:
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;
}
上述场景的问题在于原始数组要求我知道 ResultSet 中的行数,以便我可以正确初始化这些数组.所以我想要做的是使用 ArrayList 代替.我将如何修改上述场景来做到这一点?
The problem with the above scenario is that the primitive arrays require me to know the number of rows in the ResultSet so that I can properly initialize those arrays. So what I want to do is use an ArrayList instead. How would I modify the above scenario to do this?
这是我的初步尝试(是否接近)?上面显示的 HRPeople.java 文件是否在这种情况下使用过?
Here's my initial attempt (is this close)? Is HRPeople.java file shown above even used in this scenario?
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;
}
更新 1:
如果我在代码中添加以下内容,
If I add to the code the following,
return returnHRdata;
我收到以下错误(知道为什么吗?):
I get the following error (any idea why?):
myClass.java:213: incompatible types
found : java.util.List<HRPerson>
required: java.util.ArrayList<HRPerson>
return returnHRdata;
^
1 error
推荐答案
您可能希望首先像这样定义一个 HRPerson:
You probably want to first define an HRPerson like this:
public class HRPerson {
public String firstName;
public String lastName;
public String email;
public int salary;
}
然后你的主要代码看起来像:
Then your main code would look like:
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);
}
这篇关于新手尝试使用Java ArrayList 存储从数据库获取的ResultSet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!