【问题标题】:How to use mysql db within restful java api (JAX-RS, Jersey)? [duplicate]如何在restful java api(JAX-RS,Jersey)中使用mysql db? [复制]
【发布时间】:2017-08-19 06:30:21
【问题描述】:

我对 JAVA RESTful API 还是很陌生,现在我正在尝试创建一个。我看了一些教程,但是那个家伙没有使用数据库,他只是在运行时将数据存储在数组列表中。

我尝试建立一个数据库连接,然后是一个简单的查询,当我将它作为 Java 应用程序运行时它工作正常,但是一旦我尝试在我的网络应用程序中使用它,它就无法连接到我的数据库并引发异常。

例外:

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 应用程序,但不能用于 webapp:

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 application”和“webapp”的区别吗?在我看来,您缺少一些 mysql 东西的支持库。可能球衣的构建过程需要不同的方式来包含它们或其他东西?

标签: java mysql rest jdbc jersey


【解决方案1】:

错误消息清楚地表明它在下面的错误消息行中找不到mysql driver:-

java.sql.SQLException:找不到合适的驱动程序 jdbc:mysql://localhost:3306/restapi?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

您需要在您的 web 项目中包含 mysql-connector jar 才能使其工作。如果您使用的是 Maven,则需要在代码中包含以下依赖项,否则手动下载 jar 并将其放入类路径中。

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

我还创建了一个示例应用程序,旨在快速入门如何使用 java、jersey、mysql、spring 和 hibernate 开发一个 RESTful java 应用程序。请在此处阅读关注https://github.com/amitmbm/rest

【讨论】:

    猜你喜欢
    • 2014-01-24
    • 2012-06-26
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多