Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #37095

Re: Is this the way to work with try with resources

From Cecil Westerhof <Cecil@decebal.nl>
Newsgroups comp.lang.java.programmer
Subject Re: Is this the way to work with try with resources
Date 2017-08-09 06:26 +0200
Organization Decebal Computing
Message-ID <87lgmtwels.fsf@munus.decebal.nl> (permalink)
References <87poc6wb9n.fsf@munus.decebal.nl>

Show all headers | View raw


Cecil Westerhof <Cecil@decebal.nl> writes:

> I thought that I could rewrite it to:
>     private static void statistics() {
>         try (Statement stmt     = conn.createStatement();
>              ResultSet rsTotal  = stmt.executeQuery(COUNT_TOTAL_PROV);
>              ResultSet rsUnused = stmt.executeQuery(COUNT_UNUSED_PROV);
>              ResultSet rsUsed   = stmt.executeQuery(COUNT_USED_PROV)) {
>             int    count;
>             String format;
>
>             count  = rsTotal.getInt("no");
>             format = String.format("There are %%,%dd %%6s proverbs.%%n", String.format("%,d", count).length());
>             System.out.printf(format, count, "total");
>             count  = rsUnused.getInt("no");
>             if (count != 0) {
>                 System.out.printf(format, count, "unused");
>             }
>             count  = rsUsed.getInt("no");
>             System.out.printf(format, count, "used");
>         } catch (SQLException e) {
>             System.err.printf("Error in statistics\n");
>             e.printStackTrace();
>             fatalError("");
>         }
>     }
>
> That would be a little better I think, but when there are a lot of
> queries to be done, you need to define a lot of extra result-sets.
>
> But there is a problem with that. If I do that, all three result-sets
> have the same query: the last one.
> What is the reason for this? I am using SQLite3.

I do not know enough about the JDBC. When looking at:
    https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html

It clearly states that you normally only can have one current
result-set pro statement. It says there:
    All execution methods in the Statement interface implicitly close
    a current ResultSet object of the statement if an open one exists.

But that is clearly not true, because the other ones still work, but
are replaced with the other one.

The solution is to have a statement pro result-set, but than this
statement is only necessary for getting the result-set. So I rewrote
statistics to:
    private static void statistics() {
        try (ResultSet rsTotal  = executeQuery(COUNT_TOTAL_PROV);
             ResultSet rsUnused = executeQuery(COUNT_UNUSED_PROV);
             ResultSet rsUsed   = executeQuery(COUNT_USED_PROV)) {
            int    count;
            String format;

            count  = rsTotal.getInt("no");
            format = String.format("There are %%,%dd %%-6s proverbs.%%n",
                                   String.format("%,d", count).length());
            System.out.printf(format, count, "total");
            count  = rsUnused.getInt("no");
            if (count != 0) {
                System.out.printf(format, count, "unused");
            }
            count  = rsUsed.getInt("no");
            System.out.printf(format, count, "used");
        } catch (SQLException e) {
            System.err.printf("Error in statistics\n");
            e.printStackTrace();
            fatalError("");
        }
    }

And wrote the function executeQuery to make the code a little more
compact:
    private static ResultSet executeQuery(String query) throws SQLException {
        return conn.createStatement().executeQuery(query);
    }

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-08 13:26 +0200
  Re: Is this the way to work with try with resources Martin Gregorie <martin@address-in-sig.invalid> - 2017-08-08 12:51 +0000
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:10 +0200
  Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-08 18:29 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:20 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:16 +0200
  Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-08 19:30 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 06:49 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:01 +0200
    Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-09 15:39 +0200
  Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-08 21:25 -0400
    Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-08 21:36 -0400
      Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:29 +0200
        Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 20:53 -0400
          Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 23:03 -0400
    Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-08 21:48 -0400
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 07:24 +0200
  Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 06:26 +0200
    Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 08:30 +0200
    Re: Is this the way to work with try with resources Andreas Leitgeb <avl@logic.at> - 2017-08-09 09:40 +0000
      Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 12:56 +0200
        Re: Is this the way to work with try with resources Andreas Leitgeb <avl@logic.at> - 2017-08-09 16:51 +0000
          Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 19:37 +0200
            Re: Is this the way to work with try with resources Andreas Leitgeb <avl@logic.at> - 2017-08-09 19:51 +0000
              Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 22:20 +0200
                Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 23:17 +0200
          Re: Is this the way to work with try with resources Patrick Roemer <sangamon@netcologne.de> - 2017-08-09 22:08 +0200
        Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 18:07 -0400
    Re: Is this the way to work with try with resources Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 18:05 -0400
  Re: Is this the way to work with try with resources Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 06:39 +0200

csiph-web