Path: csiph.com!news.redatomik.org!aioe.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: Testing the functionality of sub classes Date: Sun, 20 Aug 2017 11:17:35 -0400 Organization: Aioe.org NNTP Server Lines: 49 Message-ID: References: <87fucnh2wu.fsf@munus.decebal.nl> <87y3qffim5.fsf@munus.decebal.nl> <87pobrf855.fsf@munus.decebal.nl> <87ziaue74o.fsf@munus.decebal.nl> <87valie4xz.fsf@munus.decebal.nl> <87o9rae27u.fsf@munus.decebal.nl> NNTP-Posting-Host: PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.java.programmer:37319 On 8/20/2017 10:35 AM, Cecil Westerhof wrote: > Arne Vajhøj writes: > >> On 8/20/2017 9:36 AM, Cecil Westerhof wrote: >>> Cecil Westerhof writes: >>>> Just to satisfy my curiosity I executed (I do not like the formatting, >>>> but that is what Eclipse does): >>>> try ( >>>> Statement stmt = conn.createStatement(); >>>> ResultSet rsOne = stmt.executeQuery("SELECT 12 AS twelve"); >>>> ResultSet rsTwo = stmt.executeQuery("SELECT 'Hello World!' AS message") >>>> ) { >>>> System.out.println(stmt); >>>> System.out.println(rsOne); >>>> System.out.println(rsTwo); >>>> } >>>> >>>> And this gives: >>>> org.sqlite.jdbc4.JDBC4Statement@685f4c2e >>>> org.sqlite.jdbc4.JDBC4ResultSet@7daf6ecc >>>> org.sqlite.jdbc4.JDBC4ResultSet@7daf6ecc >>>> >>>> So yes, it is like you said: the ResultSet is reused. Is also more >>>> logical. I jumped to a conclusion. >>> >>> With a H2 database I get: >>> stat0 >>> rs0: null >>> rs1: org.h2.result.LocalResult@1bc6a36e columns: 1 rows: 1 pos: -1 >> >> That is what happens when you try and do unsupported things: you get >> undefined/implementation specific behavior. Bad! > > Nope, it shows that the H2 driver does follow the standards (and the > SQLite3 driver does not). The first ResultSet is closed as it should > be. You can do an isClosed on it. So it is not null, but displays a > null to show you should not use it anymore. The contract for toString is extremely vague. I do not see any indication than SQLite does not follow JDBC standard. Reusing result set object should be perfectly valid per JDBC standard. And toString can practically return anything. Arne