1

私の質問を公開する前に、Java や開発の研究さえしたことがないと言わざるを得ません。申し訳ありませんが、私の質問が「ばかげている」と思われる場合は...

ダービーデータベースのいくつかの列からパネルに結果を表示する必要があります。

そのために、列と結果セットの配列を返すメソッドがあります。

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

これは、データベースの 1 列目と 2 列目から最初のメソッドを介して 2 次元配列を返す 2 番目のメソッドです...

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;

}

したがって、データベースからの 2 つの列の結果を含む 2 つの配列次元を返します...

今、私はそれをそのように表示します(2つの列の結果クエリからの結果の数が同じであるという考えで、または表示のためにnull値をフィードする必要があります):

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

より論理的に見える...

この2次元配列を正しく構築するための解決策の提案、または別のより良い解決策への道を提供してくれることを非常に嬉しく思います...

配列はそれを行うための最良の方法ですか? それを達成するための最良/迅速な方法である可能性のある10列の結果を表示する必要がある場合?

敬具、そして私の下手な英語で申し訳ありません...

編集:私の解決策は、2番目の値に2番目の結果セットを追加することでした:

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 に答える