Обсуждение: Bad value for type int

Поиск
Список
Период
Сортировка

Bad value for type int

От
"Gabriel E. Sánchez Martínez"
Дата:
Hello everyone,

Is there a known bug that makes the postgres JDBC driver treat long
variables as int variables, in the context of prepared statements?

I am getting the following error:

org.postgresql.util.PSQLException: Bad value for type int : 2759496100

while executing a prepared statement with the following Java code:

         StringBuilder sb = new StringBuilder();
         sb.append("SELECT * FROM table ");
         sb.append("WHERE timestamp BETWEEN ? AND ? ");
         sb.append("AND id IN ( ");
         for (int i = 0; i < ids.size() - 1; i++) {
             sb.append("?, ");
         }
         sb.append("? );");
         final String query = sb.toString();

         try (Connection c = db.getConnection()) {
             PreparedStatement p = c.prepareStatement(query);
             p.setDate(1, new java.sql.Date(startDate.getTime()));
             p.setDate(2, new java.sql.Date(endDate.getTime()));

             for (int i = 0; i < ids.size(); i++) {
                 int arg = 3 + i;
                 long id = ids.get(i);
                 p.setLong(arg, id);
             }

             ResultSet r = p.executeQuery();

This code is being executed by tomcat7 on Ubuntu 14.04, and I am using
the current version of the driver, 9.4-1201.  The query executes well on
pgAdmin in all cases, and in tomcat7 only when all the long ids are in
the int range.

Help will be greatly appreciated!

Regards,
Gabriel



Re: Bad value for type int

От
"Gabriel E. Sánchez Martínez"
Дата:
False alarm!  I made a mistake in a different part of the code, and once
I fixed it, I am not getting the error anymore.  Apologies for not
finding this before e-mailing the list, and thanks to everyone for the
good work!



On 08/09/2015 10:08 PM, "Gabriel E. Sánchez Martínez" wrote:
> Hello everyone,
>
> Is there a known bug that makes the postgres JDBC driver treat long
> variables as int variables, in the context of prepared statements?
>
> I am getting the following error:
>
> org.postgresql.util.PSQLException: Bad value for type int : 2759496100
>
> while executing a prepared statement with the following Java code:
>
>         StringBuilder sb = new StringBuilder();
>         sb.append("SELECT * FROM table ");
>         sb.append("WHERE timestamp BETWEEN ? AND ? ");
>         sb.append("AND id IN ( ");
>         for (int i = 0; i < ids.size() - 1; i++) {
>             sb.append("?, ");
>         }
>         sb.append("? );");
>         final String query = sb.toString();
>
>         try (Connection c = db.getConnection()) {
>             PreparedStatement p = c.prepareStatement(query);
>             p.setDate(1, new java.sql.Date(startDate.getTime()));
>             p.setDate(2, new java.sql.Date(endDate.getTime()));
>
>             for (int i = 0; i < ids.size(); i++) {
>                 int arg = 3 + i;
>                 long id = ids.get(i);
>                 p.setLong(arg, id);
>             }
>
>             ResultSet r = p.executeQuery();
>
> This code is being executed by tomcat7 on Ubuntu 14.04, and I am using
> the current version of the driver, 9.4-1201.  The query executes well
> on pgAdmin in all cases, and in tomcat7 only when all the long ids are
> in the int range.
>
> Help will be greatly appreciated!
>
> Regards,
> Gabriel
>