ClassNotFoundException: Google Cloud SQL with MySQL/SocketFa



我正试图将我的Java代码连接到我在Google Cloud SQL中创建的数据库,但我得到ClassNotFound和SQLException错误:-

. lang。ClassNotFoundException: com.google.cloud.sql.mysql.SocketFactory
java.sql。sql: jdbc:mysql

我也得到了代码中的NullPointerException,在下面的getAllFilms()方法中,我假设这是因为代码没有使数据库连接:-

ResultSet rs1 = stmt.executeQuery(selectSQL);

我已经做过的事情:-

  • 通过客户端连接测试Google Cloud SQL数据库凭据
  • 回顾相关文章,特别是[这篇][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

您是否已将Cloud SQL JDBC SocketFactory和mysql-connector-java添加到您的pom.xml中?

最新更新