1

私は著者テーブルからすべてのIDを返そうとしています...しかし機能していません...最初のIDを返すだけです...しかし、リターンを削除して印刷すると、すべてのIDが得られます..

String url = "jdbc:postgresql://localhost/testdb";
String user = "test";
String password = "test*";

try {
    con = DriverManager.getConnection(url, user, password);
    pst = con.prepareStatement("SELECT id FROM authors");
    rs = pst.executeQuery();

    while (rs.next()) {
        return rs.getInt(1);
    }
4

3 に答える 3

1

デフォルトでは、returnステートメントは返された定数/変数の値を返し、メソッドの実行を停止してメソッドを終了します。これはここで説明されています:メソッドから値を返す

クエリの実行からすべての結果を返すには、結果を に保存してから、List次のリストを返す必要があります。

List<Integer> idList = new ArrayList<Integer>();
//accessing to the database and executing the query...
rs = pst.executeQuery();
while (rs.next()) {
    //store the ids in the list
    idList.add(rs.getInt(1));
}
//close all the resources...
//at the bottom of your method
return idList;
于 2013-09-11T23:40:05.787 に答える
1

この場合、リターンは役割を果たします。ビューでfor または in を使用して、breakリターンして反復することをお勧めします。ResultSetiterator

    while (rs.next()) {
        return rs;
    }

そしてビューで:

 while (nameOfYourFunction().next()) {
            System.Out.println( rs);
        }
于 2013-09-11T23:41:05.383 に答える
0

returnこれは、メソッドが計算するはずだった値であることを示しているため、メソッド呼び出しを終了します。メソッドの最初のreturn呼び出しだけが実行されます。したがって、クエリからすべての結果を取得することを計画している場合は、それらのすべての ID のコレクションを返す必要があります。これは、呼び出す前に作成returnします。

于 2013-09-11T23:39:56.610 に答える