It seems so, that if my WEB-INF/lib contains postgres driver then Tomcat gives - No suitable driver found
Raivo On Sat, Sep 30, 2023 at 10:18 AM Raivo Rebane <raivor...@gmail.com> wrote: > I fix previous error what was my bad knowledge, > But new error occur which is related to postgres postgis jars. > If You are kind to answer me more; > > Java code is : > > public static boolean CheckIsNewInMushrooms(Connection connection, Point > AddLocation, String AddDescription) { > > boolean IsNew = true; > > > try { > > String sqlQuery = "SELECT location, description FROM mushrooms"; > > try (PreparedStatement preparedStatement = connection.prepareStatement( > sqlQuery)) { > > ResultSet resultSet = preparedStatement.executeQuery(); > > > while (resultSet.next()) { > > Point point = (Point) resultSet.getObject("location"); > > String description = resultSet.getString("description"); > > > if (AddLocation.x == point.x && AddLocation.y == point.y && AddDescription > .equals(description)) > > IsNew = false; > > } > > } > > } catch (SQLException e) { > > e.printStackTrace(); > > } > > > return IsNew; > > } > > and at line > > Point point = (Point) resultSet.getObject("location"); > > > java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast > to org.postgis.Point > at > MushroomAPIs.ProcAddMushrooms.CheckIsNewInMushrooms(ProcAddMushrooms.java:45) > How to get Point from resultset ? > Is it related to postgis driver ? > > Regards > Raivo > > On Sat, Sep 30, 2023 at 9:33 AM Raivo Rebane <raivor...@gmail.com> wrote: > >> Hi, >> sometimes I am lucky and don't get the old error, but sometime not. >> >> I tried to use PreparedStatement, but I got error - >> org.postgresql.util.PSQLException: Can't use query methods that take a >> query string on a PreparedStatement. >> at >> org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:145) >> at MushroomAPIs.Clean.deleteAllRecordsFromTable(Clean.java:34) >> and java code is - >> >> String deleteQuery = "DELETE FROM " + tableNam >> >> System.out.println(deleteQuery); >> >> PreparedStatement statement = connection.prepareStatement(deleteQuery); >> >> May be it's easy for me to use normal statement ? >> >> >> Raivo >> >> >> On Sat, Sep 30, 2023 at 8:27 AM Raivo Rebane <raivor...@gmail.com> wrote: >> >>> Sorry. I accidentally usin postgres 16, which was empty >>> Many thanks for advise !!! >>> >>> Raivo >>> >>> On Sat, Sep 30, 2023 at 8:18 AM Raivo Rebane <raivor...@gmail.com> >>> wrote: >>> >>>> May be I have to copy PostGis draiver also to tomcat/lib ? >>>> >>>> Raivo >>>> >>>> On Sat, Sep 30, 2023 at 8:01 AM Raivo Rebane <raivor...@gmail.com> >>>> wrote: >>>> >>>>> Hi, >>>>> I copied the postgres driver to Tomcat/lib. >>>>> PS C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib> dir >>>>> post* >>>>> Directory: C:\Program Files\Apache Software Foundation\Tomcat >>>>> 9.0\lib >>>>> Mode LastWriteTime Length Name >>>>> ---- ------------- ------ ---- >>>>> -a---- 28.09.2023 14:40 1081604 postgresql-42.6.0.jar >>>>> but Tomcat remains to give error - >>>>> java.sql.SQLException: No suitable driver found for >>>>> jdbc:postgresql://localhost:5432/mushroom_database >>>>> I am using Postgres 15. May be I have to use more older one ? >>>>> >>>>> >>>>> Raivo >>>>> >>>>> On Sat, Sep 30, 2023 at 6:32 AM Craig McIlwee <cra...@vt.edu> wrote: >>>>> >>>>>> > for some reason the postgresql jar is not in the classpath. >>>>>> >>>>>> This is due to the way that Tomcat loads drivers, which is documented >>>>>> at [1]. In short, the JDBC driver should be placed in the tomcat/lib >>>>>> directory and removed from the application's WEB-INF/lib directory. >>>>>> After >>>>>> doing that, I was able to get past the "No suitable driver" exception. >>>>>> >>>>>> OP, you should read that entire page, and in particular the portion >>>>>> at [2]. By registering a "Resource" with Tomcat, you can let it manage a >>>>>> connection pool for you (if you aren't already using something like >>>>>> PgBouncer or pgpool) and, if registered at the container level, in the >>>>>> future you can share that pool across all of your web applications in the >>>>>> container. >>>>>> >>>>>> [1] >>>>>> https://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html#DriverManager,_the_service_provider_mechanism_and_memory_leaks >>>>>> [2] >>>>>> https://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html#PostgreSQL >>>>>> >>>>>> Craig >>>>>> >>>>>>>