【问题标题】:ResultSet to Array结果集到数组
【发布时间】:2016-06-02 19:54:33
【问题描述】:

我有一个使用查询返回的结果集:

String query = "select Bookname, SubjectName from books join Subjects on Subjects.SubjectID = Books.subjectID where classID = '1a'";
ResultSet temp = null;
try
{
   Statement st = conn.createStatement();
   ResultSet rs = st.executeQuery(query);

   temp = rs;
}

我只是想知道是否可以将结果集转换为两个单独的数组:例如 BookName[] 和 BookSubject[],以便稍后在列表视图中显示它们?结果集和android中的这个概念相对较新

【问题讨论】:

  • ResultSet 对象具有读取列的方法。您可以使用它们来读取值并加载您的数组。与其创建两个单独的数组,不如创建一个映射您的书籍的类(如果您还没有的话)。还有像 OrmLite 这样的框架可以用来正确地进行这种映射。

标签: java android jdbc


【解决方案1】:

您应该能够轻松地遍历结果集上的结果,并在您进行交互时用结果填充每个数组。

类似这样的:

...
ResultSet rs = st.executeQuery(query);

ArrayList<String> names = new ArrayList<String>();
ArrayList<String> subjects = new ArrayList<String>();

while (rs.next()) { 
    names.add(rs.getString(1));
    subjects.add(rs.getString(2));
}

// finally turn the array lists into arrays - if really needed
String[] nameArr = new String[names.size()];
nameArr = names.toArray(nameArr);

String[] subjectArr = new String[subjects.size()];
subjectArr = subjects.toArray(subjectArr);

希望有帮助!

【讨论】:

  • 如果您知道最大结果集大小,是否可以更快地创建该大小的数组,然后使用 System.arrayCopy 而不是创建 Arraylist?
  • 我不确定我是否明白... System.arrayCopy 将复制什么数组?我认为它不能直接从 ResultSet 中读取
  • 你为什么不直接String[] nameArr = names.toArray(nameArr);
  • 因为右边执行时nameArr变量还不存在
猜你喜欢
  • 2016-07-21
  • 2013-01-23
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 2021-07-24
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多