【发布时间】: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