2017-03-26 61 views
1

我是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; 
} 

也許這不會是連接的正確方法到一個數據庫(因爲我可能不想在每個查詢中連接到數據庫),但現在對我來說並不重要。

(對不起,我的英語,謝謝你的答案)

+0

您能澄清「java應用程序」和「webapp」之間的區別嗎?在我看來,你錯過了一些支持庫的MySQL的東西。球衣的構建過程可能需要採用不同的方式來包含它們或什麼? –

回答

1

錯誤消息明確表示它不能在低於行錯誤信息的查找mysql driver: -

的java.sql。的SQLException:發現 JDBC沒有合適的驅動程序的:mysql://本地主機:3306/RESTAPI了useUnicode =真& useJDBCCompliantTimezoneShift =真& useLegacyDatetimeCode =假& serverTimezone = UTC

您需要在您的web項目中包含mysql連接器jar以使其工作。如果您使用的是Maven,那麼您需要在代碼中包含以下依賴項,否則手動下載jar並將其放入類路徑中。

<!--Mysql-Connector--> 
<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.36</version> 
</dependency> 

此外,我創建了一個示例應用程序,這是旨在就如何開發使用Java,球衣,MySQL和春天一個RESTful Java應用程序,休眠快速啓動。請在這裏閱讀以下內容https://github.com/amitmbm/rest

相關問題