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


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

Is this the way to work with try with resources

Path csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From Cecil Westerhof <Cecil@decebal.nl>
Newsgroups comp.lang.java.programmer
Subject Is this the way to work with try with resources
Date Tue, 08 Aug 2017 13:26:44 +0200
Organization Decebal Computing
Lines 71
Message-ID <87poc6wb9n.fsf@munus.decebal.nl> (permalink)
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
Injection-Info mx02.eternal-september.org; posting-host="fbcb25d28702fa7a6864db6c98c1fe4a"; logging-data="21781"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19CYiT6U8J86UMfpoX3xo5NdMUIKS+ucwU="
User-Agent Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
X-Homepage http://www.decebal.nl/
Cancel-Lock sha1:er7lfKRx4f1c6NPXZvJB0kd4lQE= sha1:tAyNtNhsYN+Gy+VCI3Mh7JdbBLA=
Xref csiph.com comp.lang.java.programmer:37077

Show key headers only | View raw


When using with resources you ‘should’ always work with try with
resources. At the moment I have something like the following code:
    private static void statistics() {
        try (Statement stmt = conn.createStatement()) {
            String format;

            try (ResultSet rsTotal = stmt.executeQuery(COUNT_TOTAL_PROV)) {
                final int count = rsTotal.getInt("no");

                format = String.format("There are %%,%dd %%6s proverbs.%%n", String.format("%,d", count).length());
                System.out.printf(format, count, "total");
            }
            try (ResultSet rsUnused = stmt.executeQuery(COUNT_UNUSED_PROV)) {
                final int count = rsUnused.getInt("no");

                if (count != 0) {
                    System.out.printf(format, count, "unused");
                }
            }
            try (ResultSet rsUsed = stmt.executeQuery(COUNT_USED_PROV)) {
                final int count = rsUsed.getInt("no");

                System.out.printf(format, count, "used");
            }
        } catch (SQLException e) {
            System.err.printf("Error in statistics\n");
            e.printStackTrace();
            fatalError("");
        }
    }

It feels a bit long-winded. Is this the way to go, or is there a
better way?


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.

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

Back to comp.lang.java.programmer | Previous | Next — 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