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 点。
我正在获取堆栈跟踪。请注意,我的 AWSdb-URL 对于此 post.
是假的 urljava.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 点。