【发布时间】:2021-05-22 16:20:05
【问题描述】:
我正在尝试将我的 Java 代码连接到我在 Google Cloud SQL 中创建的数据库,但出现 ClassNotFound 和 SQLException 错误:-
java.lang.ClassNotFoundException: com.google.cloud.sql.mysql.SocketFactory
java.sql.SQLException: 找不到适合 jdbc:mysql 的驱动程序
我还在代码中得到了 NullPointerException,在下面一行的 getAllFilms() 方法中,我假设这是因为代码没有建立数据库连接:-
ResultSet rs1 = stmt.executeQuery(selectSQL);
到目前为止我做过的事情:-
- 通过客户端连接测试了 Google Cloud SQL 数据库凭据
- 已审核相关帖子,尤其是 [this one][1]
- 已阅读 Google 文档
- 将 MySQL 和 Socket Factory Connector(j8) JAR 添加到我的项目依赖项中
很遗憾,我仍然无法解决。希望有人可以提供帮助。我在下面附上了我的 Java 代码。提前谢谢...
Film oneFilm = null;
Connection googleSqlConnection = null;
Statement stmt = null;
String url = "jdbc:mysql:///<dbname>?<cloudSqlInstance>&socketFactory=com.google.cloud.sql.
mysql.SocketFactory&user=<user>&password=<pword>";
public FilmDAO() {
}
private void openConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.google.cloud.sql.mysql.SocketFactory");
} catch (Exception e) {
System.out.println(e);
}
try {
googleSqlConnection = DriverManager.getConnection(url);
stmt = googleSqlConnection.createStatement();
} catch (SQLException se) {
System.out.println(se);
}
}
private void closeConnection() {
try {
googleSqlConnection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Film> getAllFilms() {
ArrayList<Film> allFilms = new ArrayList<>();
openConnection();
try {
String selectSQL = "select * from films limit 50";
ResultSet rs1 = stmt.executeQuery(selectSQL);
while (rs1.next()) {
oneFilm = getNextFilm(rs1);
allFilms.add(oneFilm);
}
stmt.close();
closeConnection();
} catch (SQLException se) {
System.out.println(se);
}
return allFilms;
}
[1]: https://stackoverflow.com/questions/53693679/connecting-to-google-cloud-sql-with-java
【问题讨论】:
标签: java jakarta-ee google-cloud-sql