X-Received: by 2002:a37:47c4:: with SMTP id u187mr197171qka.18.1551371648266; Thu, 28 Feb 2019 08:34:08 -0800 (PST) X-Received: by 2002:a25:5306:: with SMTP id h6mr265297ybb.102.1551371648075; Thu, 28 Feb 2019 08:34:08 -0800 (PST) Path: csiph.com!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!m21no4820286qta.0!news-out.google.com!y15ni2185qta.0!nntp.google.com!m21no4820279qta.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.java.programmer Date: Thu, 28 Feb 2019 08:34:07 -0800 (PST) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=84.74.101.34; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r NNTP-Posting-Host: 84.74.101.34 References: <709a1f3b-fc99-4bd0-a8b8-866092bb7ae9@googlegroups.com> <8e1597a2-5c18-4fd1-83a4-7667e4d11e77@googlegroups.com> <23a8128b-5c54-45ba-bfd0-2f7dda078517@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <692da128-9302-41cf-a8f7-2a2a5903bf82@googlegroups.com> Subject: Re: it's Closeable, but I don't want to close() it yet. From: bursejan@gmail.com Injection-Date: Thu, 28 Feb 2019 16:34:08 +0000 Content-Type: text/plain; charset="UTF-8" Lines: 65 Xref: csiph.com comp.lang.java.programmer:38750 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(); > > } > > }