Re: JDBC

Поиск
Список
Период
Сортировка
От Chuck Davis
Тема Re: JDBC
Дата
Msg-id CAHf=Y_bph5E7pvOzkyFXawDaC=v9mOaTBP=KjYdFp2ZW+RKhkA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: JDBC  (Dave Cramer <pg@fastcrypt.com>)
Список pgsql-jdbc
If I query without the "exists" clause I get the PG exception that the
relation does not exist (which I guess tells me the table does not
exist) but I'd like a better way to test for existence than
exceptions.

On Sun, Jun 10, 2018 at 4:15 PM, Dave Cramer <pg@fastcrypt.com> wrote:
>
> On 10 June 2018 at 19:09, Chuck Davis <cjgunzel@gmail.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.g.johnston@gmail.com> wrote:
>> > On Sunday, June 10, 2018, Chuck Davis <cjgunzel@gmail.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
>


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: JDBC
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: JDBC