java.sql.SQLException:创建 Web 应用程序 (POSTGRES) 时找不到适合 "MY AWS DATABASE" 的驱动程序

java.sql.SQLException: No suitable driver found for "MY AWS DATABASE" while creating a webapp (POSTGRES)

我正在获取堆栈跟踪。请注意,我的 AWSdb-URL 对于此 post.

是假的 url
java.sql.SQLException: No suitable driver found for "MyAWSDB-URL?currentSchema=mySchema"

这是我的连接工厂(JDBC)

public class ConnectionFactory {
    private static ConnectionFactory cf = new ConnectionFactory(1);
    
    public static ConnectionFactory getConnectionFactory() {
        return cf;
    }
    

    private Connection[] conn;
    
    
    private ConnectionFactory(int numberOfConnections) {
        
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        
        String url = System.getenv("DB_URL");
        
        String user = System.getenv("DB_USER");
        String password = System.getenv("DB_PASS");
        

        

        try {
            this.conn = new Connection[numberOfConnections];
            for (int i = 0; i < this.conn.length; i++) {
                Connection conn = DriverManager.getConnection(url, user, password);
                this.conn[i] = conn;
            }
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    

    public Connection getConnection() {
        return this.conn[0];
    };
    
    public void releaseConnection(Connection conn) {
        //do nothing - release conn after use if in multiple threads
    };
    

这是使用我的连接工厂的 DAO(数据访问对象)

public class EmployeeDAO {
    private ConnectionFactory cf = ConnectionFactory.getConnectionFactory();
    

    
    
    
//  -----------------------------------------------------------LOGIN AND GET EMPLOYEE CREDENTIALS--------------------------------------------------------------------------------
    
    public User login(String username, String pass) {
        Connection conn = this.cf.getConnection();
        User loginCredentials = null;
        
        
            try {
                String sql = "select * from \"user\" u \r\n"
                        + "where username = "+username+" and pass = "+pass;
                
                Statement s = conn.createStatement();
                ResultSet res = s.executeQuery(sql);
                
                while(res.next()) {
                    loginCredentials = new User(res.getInt("user_id"),res.getString("fname"), res.getString("lname"), res.getString("username"), res.getString("pass"), res.getString("email"));
                }
                
                System.out.println(loginCredentials.toString());
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
    

            return loginCredentials;


    }
    
}

这是一个 Maven 项目,我的依赖项位于 pom.xml

    <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.18</version>
</dependency>

我的 ENV 变量设置正确。 IDK我做错了什么。请引导我朝着正确的方向前进。 我的 WEB-INF -> lib 上没有任何内容

您传递给 DriverManager.getConnection 的 URL 不是有效的 JDBC URL。

Url 应如下所示:

jdbc:postgresql://postgresql-instance1.cg034hpkmmjt.us-east-1.rds.amazonaws.com/myDatabase

当然,这只是一个例子

您需要提供前缀 jdbc:postgresql://,然后是连接字符串的其余部分。您可以在 Amazon RDS 控制台的数据库详细信息页面中找到确切的值。

请考虑查看 AWS documentation 中有关如何连接到 Amazon RDS 中的 PostgreSQL 数据库的第 4 点。