使用Java的ArrayList存储的ResultSet从数据库中获得的新手尝试 [英] newbie attempt to use Java ArrayList to store ResultSet obtained from database

查看:177
本文介绍了使用Java的ArrayList存储的ResultSet从数据库中获得的新手尝试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据库服务器使用JDBC的Java应用程序服务器进行通信。我想将数据从数据库结果集到Java变量存储。

下面是我的Java类,HRPeople:

 公共类HRPeople {
    公众诠释要素;
    公众的String []名字;
    公众的String []姓氏;
    公众的String []电子邮件;
    公众诠释[]工资;
}

我目前使用这个类来存储来自ResultSet中的数据,如下:

 查询=SELECT名字,姓氏,电子邮件,工资从HR.EMPLOYEES哪里ROWNUM 6;;
RSET = stmt.executeQuery(查询);
而(rset.next()){
    returnHRdata.FirstName [Ⅱ] = rset.getString(如first_name);
    returnHRdata.LastName [Ⅱ] = rset.getString(姓氏);
    returnHRdata.Email [II] = rset.getString(电子邮件);
    returnHRdata.Salary [II] = rset.getInt(工资);
    二= II + 1;
}

与上述方案的问题是,在原始的阵列需要我知道在结果集中的行数,这样我可以正确初始化这些阵列。因此,我想要做的就是使用ArrayList来代替。我将如何修改上面的场景做到这一点?

下面是我最初的尝试(这是接近)?以上,即使在这种情况下使用的显示HRPeople.java文件?

 查询=SELECT名字,姓氏,电子邮件,工资从HR.EMPLOYEES哪里ROWNUM 6;;
RSET = stmt.executeQuery(查询);
清单< HRPeople> returnHRdata =新的ArrayList< HRPeople>();
而(rset.next()){
   returnHRdata.FirstName = rset.getString(FIRST_NAME);
   returnHRdata.LastName = rset.getString(姓氏);
   returnHRdata.Email = rset.getString(电子邮件);
   returnHRdata.Salary = rset.getInt(工资);
   returnHRdata.add;
}

更新1:

如果我添加到code以下,

 收益returnHRdata;

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

  myClass.java:213:不兼容的类型
发现:java.util.List的< HRPerson>
要求:java.util.ArrayList中< HRPerson>
    返回returnHRdata;
           ^
1个错误


解决方案

您可能要首先定义一个像这样的HRPerson:

 公共类HRPerson {
    公共字符串的firstName;
    公共字符串的lastName;
    公共字符串的电子邮件;
    公众诠释的工资;
}

然后你的主code看起来像:

 查询=SELECT名字,姓氏,电子邮件,工资从HR.EMPLOYEES哪里ROWNUM 6;;
RSET = stmt.executeQuery(查询);
清单< HRPerson> returnHRdata =新的ArrayList< HRPerson>();
而(rset.next()){
   HRPerson人=新HRPerson();
   person.firstName = rset.getString(FIRST_NAME);
   person.lastName = rset.getString(姓氏);
   person.email = rset.getString(电子邮件);
   person.salary = rset.getInt(工资);
   returnHRdata.add(人);
}

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.

Here's my Java class, HRPeople:

public class HRPeople {
    public int elements;
    public String[] FirstName;
    public String[] LastName;
    public String[] Email;
    public int[] Salary;
}

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

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?

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

UPDATE 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

解决方案

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆