1

在公开我的问题之前,我不得不说我从来没有学习过 Java,甚至没有进行过开发研究。很抱歉如果我的问题看起来“愚蠢”......

我必须从 derby 数据库的几个列中将结果显示到 Panel 中。

为了做到这一点,我有一个方法返回一个列数组和一个结果集:

public String[] toStringArray(ResultSet resultSet, int columnIndex) {
    LinkedList<String> resultList = new LinkedList<String>();
    try {
        while (resultSet.next()) {
            resultList.add(resultSet.getString(columnIndex));
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return resultList.toArray(new String[0]);
}

这是我的第二个方法,它通过第一个方法从我的数据库的第一列和第二列返回一个二维数组......

public String[][] GetArray() {
String[] arrayone = new String[0];
String[] arraytwo = new String[1];
String[][] array = new String[2][];

try {
    String getInfo =
                     "SELECT ONE, TWO FROM APP.DB ";

ResultSet listR = s.executeQuery(getInfo);
arrayone = toStringArray(listR,1);
arraytwo = toStringArray(listR,2);
   array [0] = arrayone; 
   array [1] = arraytwo; 

} } }catch (SQLException ex) {
            Logger.getLogger(CalendarPanelTest.class.getName()).log(Level.SEVERE, null, ex);
        }}
      return array;

}

所以我返回一个两个数组维度,其中包含数据库中两列的结果......

现在我像这样显示它(想法是两列结果查询的结果数量相同 - 或者必须输入空值才能显示):

String[][] result = GetArray();

int nb = array.length;
for(int a=0; a < nb; a++) 
{
System.print.ln(result[0][a]+result[1][a])
}

我认为问题出在

return resultList.toArray(new String[0]); 

我试图改变这个对象没有结果......

这似乎只将数据推送到第一列......

或形成我的方法或在列数组的声明中:

String[] arrayone = new String[0];
String[] arraytwo = new String[1];
String[][] array = new String[2][];

但是我尝试了所有数字的可能性,当我想显示它时,这个给了我第一列的结果......:

String[][] array = new String[2][];

即使

String[][] array = new String[1][]

或者

String[][] array = new String[0][1]; 

似乎更符合逻辑...

我很高兴有一些解决方案的建议来正确构建这个二维数组,或者给我提供另一个更好的解决方案的方法......

数组是最好的方法吗?如果我需要显示 10 个 colmun 的结果,这可能是实现该目标的最佳/快速方法?

最好的问候,并为我糟糕的英语感到抱歉......

编辑:我的解决方案是为第二个值添加第二个结果集:

ResultSet listR = s.executeQuery(getInfo);
    ResultSet listR2 = s.executeQuery(getInfo);
    arrayone = toStringArray(listR,1);
    arraytwo = toStringArray(listR2,2);

感谢 Soumyadip Das 的帮助!!!问候,

工作速度 第一时间就正常工作...

4

1 回答 1

1

我认为您错过了右括号,如下所示:

public String[] toStringArray(ResultSet resultSet, int columnIndex) {
    LinkedList<String> resultList = new LinkedList<String>();
    try {
        while (resultSet.next()) { // where is the closing bracket ??
            resultList.add(resultSet.getString(columnIndex));
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return resultList.toArray(new String[0]);
}

如果这只是一个发布错误,请检查如下:


我认为让它简单,可能是我错了,但你可以试试这个:

public String[] toStringArray(ResultSet resultSet, int columnIndex) {
    ArrayList<String> results = new ArrayList<String>();
    try {
    // COMMENT: please debug your code to be sure the resultSet is not empty.
        while (resultSet.next()) {
            results.add(resultSet.getString(columnIndex));}
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return results.toArray();
}

以下 2 行可能会导致问题:

 array [0] = arrayone; 
   array [1] = arraytwo;

建议:始终正确调试您的代码。它可以解决您 80% 的问题。

于 2012-06-30T13:54:08.867 回答