Re: JDBC

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Chuck Davis <cjgunzel(at)gmail(dot)com>
Cc: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: JDBC
Date: 2018-06-10 23:15:45
Message-ID: CADK3HH+E2-R5vZzPrheEVMRymDxpmEzDhYNft_rvBdT3jXWnEg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On 10 June 2018 at 19:09, Chuck Davis <cjgunzel(at)gmail(dot)com> wrote:

> If I try to return a ResultSet the class will not compile with the
> message that boolean cannot be converted to a ResultSet. And this is
> in synch with the documentation that states the "exists" subquery will
> return a boolean -- not a ResultSet.
>
> There are a number of sites that indicate the statement is the way to
> find out if a table exists. Are the sites for an older version of PG?
> I'm running on 10.
>
> Thanks.
>
> On Sun, Jun 10, 2018 at 1:44 PM, David G. Johnston
> <david(dot)g(dot)johnston(at)gmail(dot)com> wrote:
> > On Sunday, June 10, 2018, Chuck Davis <cjgunzel(at)gmail(dot)com> wrote:
> >>
> >>
> >> try {
> >> result = stat.execute("select exists (select 1 from
> >> information_schema.tables where table_name = 'entities')");
> >> System.out.println("the checkEntity returned a result of "
> >> + result);
> >> } catch (SQLException ex) {
> >>
> >> Logger.getLogger(ClientConstants.class.getName()).log(Level.SEVERE,
> >> null, ex);
> >> result = false;
> >> return result;
> >> }
> >
> >
> > Your query is putting "false" into cell (0,0) of a ResultSet. You are
> > failing to even look at the resultset to see if it holds a true or false.
> >
> > The query should never fail since you aren't using the table name
> directly
> > but are checking for it as a value in another table that always exists.
> The
> > inner query returns zero records when the table doesn't exist and the
> EXISTS
> > construct converts that to false.
> >
> > David J.
> >
>
>

idiomatic java suggests that you need to do

resultset rs = statement.query(your select statement)

if rs.next then
result = rs.getInt(1)

close result set and statement

return result == 1

In response to

  • Re: JDBC at 2018-06-10 23:09:39 from Chuck Davis

Responses

  • Re: JDBC at 2018-06-10 23:21:34 from Chuck Davis

Browse pgsql-jdbc by date

  From Date Subject
Next Message Chuck Davis 2018-06-10 23:21:34 Re: JDBC
Previous Message Chuck Davis 2018-06-10 23:09:39 Re: JDBC