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


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

Re: it's Closeable, but I don't want to close() it yet.

Newsgroups comp.lang.java.programmer
Date 2019-02-28 09:00 -0800
References (4 earlier) <slrnq7fkg8.cfl.avl@logic.at> <23a8128b-5c54-45ba-bfd0-2f7dda078517@googlegroups.com> <fdb81cf4-61e8-4b09-a62f-c97253f23550@googlegroups.com> <f71c1d05-cc27-4ecb-bea0-c32f03cd698e@googlegroups.com> <692da128-9302-41cf-a8f7-2a2a5903bf82@googlegroups.com>
Message-ID <3a4ed199-10a5-4ea3-882e-8d598a82dccf@googlegroups.com> (permalink)
Subject Re: it's Closeable, but I don't want to close() it yet.
From Eric Douglas <e.d.programmer@gmail.com>

Show all headers | View raw


On Thursday, February 28, 2019 at 11:34:22 AM UTC-5, burs...@gmail.com wrote:
> See also:
> 
> Must JDBC Resultsets and Statements be closed 
> separately although the Connection is closed afterwards?
> https://stackoverflow.com/q/4507440/502187
> 
> The clean OO-solution, in case you dont need
> the result set later, is to use  try-with-resources statement.
> I dont recommend using result sets later, since
> 
> database systems usually have a dead man's handling.
> There can be timeouts on all kind of layer levels.
> Usually these tomeouts have a special error code,
> 
> and you should then do retry. It could be that your
> connection pooling product does this already for you.
> But it might not apply to result sets.
> 
> So somehow the eclipse warning makes sense.
> 
> On Thursday, February 28, 2019 at 5:24:29 PM UTC+1, burs...@gmail.com wrote:
> > Actually you use try (resource), which does automatically
> > always a close. Its internally implemented with try finally
> > and does exceptiong piggy packing.
> > 
> > But JDBC says, if you close a statement, I guess result
> > sets are also closed. And if you close a connection, statements
> > are also closed. So what is this fuzz about?
> > 
> > What would be helpful, if the warning from the IDE would
> > be shown as well. Could the OP please give the full test case,
> > including its outcome?
> > 
> > On Thursday, February 28, 2019 at 3:52:24 PM UTC+1, Eric Douglas wrote:
> > > On Thursday, February 28, 2019 at 9:19:24 AM UTC-5, Eric Douglas wrote:
> > > > On Thursday, February 28, 2019 at 7:20:35 AM UTC-5, Andreas Leitgeb wrote:
> > > > > The Closeable interface does not provide any concept of opening.
> > > > > Eclipse just sees a local variable of a Closeable type that
> > > > > goes out of scope without .close() being called on it.
> > > 
> > > Now, it is possible to confuse Eclipse.  I tried this method and got a warning.  Is there a better way to do this?
> > > 
> > >      public void testQuery(final String db_connect_string) {
> > >           try (Connection conn = DriverManager.getConnection(db_connect_string)) {
> > >                final String queryString = "select * from Log limit 10000 offset ?";
> > >                try (PreparedStatement statement = conn.prepareStatement(queryString, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
> > >                     int r = 0;
> > >                     int r2 = -1;
> > >                     statement.setInt(1, 0);
> > >                     ResultSet rs = statement.executeQuery();
> > >                     while (r != r2) {
> > >                          r2 = r;
> > >                          while (rs.next()) {
> > >                               r++;
> > >                          }
> > >                          rs.close();
> > >                          statement.setInt(1, r);
> > >                          rs = statement.executeQuery();
> > >                     }
> > >                     rs.close();
> > >                }
> > >           } catch (SQLException e) {
> > >                e.printStackTrace();
> > >           }
> > >      }

While my ugly loop to reuse the ResultSet variable should work properly, Eclipse didn't recognize that it closed properly.  That error message is "Potential resource leak: 'rs' may not be closed"

I'm guessing the clean way to paginate the table (my while loop uses POI to write the records to Excel, the r variable is actually the row number there) could look like this?
     
     public void testQuery(final String db_connect_string) {
          final String queryString = "select * from Log limit 10000 offset ?";
          try (Connection conn = DriverManager.getConnection(db_connect_string);PreparedStatement statement = conn.prepareStatement(queryString, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
               int r = 0;
               int r2 = -1;
               while (r != r2) {
                    r2 = r;
                    statement.setInt(1, r);
                    try (ResultSet rs = statement.executeQuery()) {
                         while (rs.next()) {
                              r++;
                         }
                    }
               }
          } catch (SQLException e) {
               e.printStackTrace();
          }
     }

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


Thread

it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-02-27 15:51 +0000
  Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-27 08:48 -0800
    Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-02-27 19:03 +0000
      Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-27 11:09 -0800
        Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-02-28 12:20 +0000
          Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 06:19 -0800
            Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 06:52 -0800
              Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 08:24 -0800
                Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 08:34 -0800
                Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 09:00 -0800
                Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 11:12 -0800
                Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 11:26 -0800
                Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 11:33 -0800
                Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 11:37 -0800
                Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 11:41 -0800
                Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 11:48 -0800
                Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 12:51 -0800
                Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-03-01 08:47 +0000
                Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-03-01 09:31 +0000
                Re: it's Closeable, but I don't want to close() it yet. Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2019-03-03 02:01 +0100
                Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-03-04 09:38 +0000
                Re: it's Closeable, but I don't want to close() it yet. Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2019-03-04 12:26 +0100
                Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-03-05 14:34 +0000
                Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-03-05 07:34 -0800
                Re: it's Closeable, but I don't want to close() it yet. Arne Vajhøj <arne@vajhoej.dk> - 2019-03-04 13:59 -0500
  Re: it's Closeable, but I don't want to close() it yet. Marcel Mueller <news.5.maazl@spamgourmet.org> - 2019-02-28 08:30 +0100
    Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-02-28 19:10 +0000
      Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 11:34 -0800
      Re: it's Closeable, but I don't want to close() it yet. Marcel Mueller <news.5.maazl@spamgourmet.org> - 2019-02-28 22:24 +0100
        Re: it's Closeable, but I don't want to close() it yet. Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2019-02-28 23:25 +0100
          Re: it's Closeable, but I don't want to close() it yet. Andreas Leitgeb <avl@logic.at> - 2019-03-01 09:43 +0000
  Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 12:11 -0800
    Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 13:49 -0800
      Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 13:52 -0800
        Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 13:59 -0800
          Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-02-28 16:17 -0800
  Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 12:26 -0800
  Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-02-28 13:44 -0800
  Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-03-01 07:40 -0800
    Re: it's Closeable, but I don't want to close() it yet. bursejan@gmail.com - 2019-03-01 08:34 -0800
  Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-03-11 06:27 -0700
    Re: it's Closeable, but I don't want to close() it yet. Eric Douglas <e.d.programmer@gmail.com> - 2019-03-11 07:24 -0700

csiph-web