Dead End
Dead End

Reputation: 587

PSQLException: password-based authentication

Here is the Exception:when I run my testDao file, working on springs.Is there any path given to database in springs?

    org.postgresql.util.PSQLException: The server requested password-based authentication, but no password was provided.
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:203)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:159)
    at org.postgresql.Driver.makeConnection(Driver.java:416)
    at org.postgresql.Driver.connect(Driver.java:283)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.test.dao.java.TestDao.getConnection(TestDao.java:37)
    at com.test.dao.java.TestDao.getTest(TestDao.java:61)
    at com.test.main.java.TestMain.main(TestMain.java:33)

HERE is my >>testDao file where connection with postgresql is made

   @Component 
    public class TestDao {
    static PreparedStatement ps;
    ResultSet rs;
    Connection conn= null;

     /**
     * @return
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    private Connection getConnection() throws SQLException, ClassNotFoundException,FileNotFoundException,NullPointerException{


         if(conn==null)
         {
        try {
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection(
                       "jdbc:postgresql://localhost:5432/testdb?user=postgres & password=postgres");
                    conn.close();
        }
                catch(Exception e) {
            e.printStackTrace();

        }
     }
         return conn;


    }

    /**
     * @param testId
     * @return
     * @throws SQLException
     * @throws ClassNotFoundException
     * @throws NullPointerException 
     * @throws FileNotFoundException 
     */
    public Test getTest(int testId) throws SQLException, ClassNotFoundException, FileNotFoundException, NullPointerException  {

            conn = getConnection();
        try {

            conn = getConnection();
            ps =conn.prepareStatement("SELECT * FROM testdb.testtab where id =?");
            ps.setInt(1, testId);
            Test test =null;
            rs = ps.executeQuery();
            if(rs.next())
            {
                test = new Test(testId, rs.getString("name"));
            }

    return test;
        }
        finally
        {
            rs.close();
            ps.close();
            conn.close();
        }


    }
    }

HERE is my >>springNew.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd "

xmlns:context="http://www.springframework.org/schema/context">
<!-- <context-annotation-config/> -->
<context:component-scan base-package="com.test.dao"/>
</beans>

Upvotes: 22

Views: 55587

Answers (1)

Dead End
Dead End

Reputation: 587

I got the issue and finally resolved it firstly schema was needed to be mentioned as below

 conn=DriverManager.getConnection("jdbc:postgresql://localhost:5432/testdb?currentSchema=testdb&user=postgres&password=postgres");

Secondly I was closing the conn thus it was returning empty rs and was closing the connection before it could be used.

Upvotes: 22

Related Questions