当前位置: 首页 > 面试题库 >

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

屠浩
2023-03-14
问题内容

我有一个使用JDBC与Java应用程序服务器通信的数据库html" target="_blank">服务器。我想将数据库ResultSet中的数据存储到Java变量中。

这是我的Java类HRPeople:

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

我目前使用此类存储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;
}

上述情况的问题在于,原始数组要求我知道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;
}

更新1:

如果我在代码中添加以下内容,

return returnHRdata;

我收到以下错误(为什么?):

myClass.java:213: incompatible types
found   : java.util.List<HRPerson>
required: java.util.ArrayList<HRPerson>
    return returnHRdata;
           ^
1 error

问题答案:

您可能想要首先定义一个HRPerson,如下所示:

public class HRPerson {
    public String firstName;
    public String lastName;
    public String email;
    public int salary;
}

然后您的主要代码如下所示:

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


 类似资料:
  • 我正在尝试将一个图像存储到FireBase数据库中,我很确定所有的代码都可以很好地获取imagelink,因为它不再像以前那样显示错误。然而现在,当我上传图片时,出现了一个新问题。这与存储异常有关,我猜它在实际从存储中提取imagelink并将其插入数据库时遇到了问题。下面是我认为出现问题的代码: 如果需要,这是我的整个代码: } 错误消息: 2020-06-02 13:54:22.594 346

  • 我试图存储多个数据到我的数据透视表。我有分类用户表category_id和user_id。这是我的店铺功能。 在blade中,我有name=“categoryId[]”和name=“userId[]”。但它只存储一个类别id。我做错了什么?

  • 这就是我的设想。我有一个POJO类,我们称之为Car,声明如下: 在那个类中,列表 图片应该包含到我实际上传图片的Firebase存储的链接。由于Firebase函数的异步根,我在这方面遇到了问题。在第一个时刻,pictures列表具有图像的本地路径,因为我不希望用户在完成向Firebase数据库添加记录所需的所有步骤之前上传任何内容。所以,我只保存图像的本地路径。但是,一旦数据保存到云中,我当然

  • 我正在尝试将一个字节数组存储到mySQL中,其中包含加密的“密码”。我尝试过使用Blob和varbinary数据类型,但是当我提取加密的数据时,它似乎没有被正确解密,因为存储的字节数组与我开始使用的字节数组不同。 下面的加密/解密代码 我已经打印出字节数组,看看是否存在差异,正如您可以看到的,在转换到数据库时,它确实发生了变化,我不确定如何克服这个问题 字节数组输出(上为原始字节数组,下为来自数据

  • 我试图使用Bean shell断言从我的JBDC请求采样器中提取结果 我在我的采样器中添加了一个beanshell断言来提取结果,但运行时出现了一个错误。有关守则是: 其中dataFromDB是我的JBDC请求采样器的结果变量名 错误是:断言失败消息:org。阿帕奇。乔芬。util。JMeterException:调用bsh方法时出错:eval

  • 我有一个新的alfresco社区版本5.0。安装。我正在尝试使用java连接器服务上载/下载与4.2兼容的文件。c露天安装。 此连接器应用程序使用chemistry-opencmis-client-api-0.8.0。 使用连接器上载文件时,我打开连接,获取存储库,还可以正确获取存储库根文件夹id: 然后创建会话: 但是当我想获取根文件夹对象时: 我收到“CmisObjectNotFoundExc