我是JAVA RESTful API的新手,現在我試圖創建一個。我看了一些教程,但那個人並沒有使用數據庫,他只是在運行時將數據存儲在數組列表中。如何在restful java api(JAX-RS,Jersey)中使用mysql db?
我試圖做一個數據庫連接,然後一個簡單的查詢,並且當它作爲Java應用程序運行時它工作正常,但只要我嘗試在我的Web應用程序中使用它,它無法連接到我的數據庫並引發異常。
例外:
SEVERE: Servlet.service() for servlet [Jersey Web Application] in context
with path [/restapi] threw exception [java.lang.IllegalStateException:
Cannot connect the database!] with root cause
java.sql.SQLException: No suitable driver found for
jdbc:mysql://localhost:3306/restapi?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
這裏是我的代碼,它可以作爲一個Java應用程序,而不是在一個Web應用程序:
public class AuthService {
private String url = "jdbc:mysql://localhost:3306/restapi?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
public List<User> getAllUsers() {
List<User> users = new ArrayList<User>();
try (Connection conn = DriverManager.getConnection(url, "blabla", "blabla")) {
Statement stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String login = rs.getString("login");
String first = rs.getString("firstname");
String last = rs.getString("lastname");
users.add(new User(id, login, first, last));
}
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
return users;
}
也許這不會是連接的正確方法到一個數據庫(因爲我可能不想在每個查詢中連接到數據庫),但現在對我來說並不重要。
(對不起,我的英語,謝謝你的答案)
您能澄清「java應用程序」和「webapp」之間的區別嗎?在我看來,你錯過了一些支持庫的MySQL的東西。球衣的構建過程可能需要採用不同的方式來包含它們或什麼? –