Servlet with Database在Eclipse中工作正常,但在服务器上崩溃了?

时间:2016-03-26 21:42:36

标签: java servlets heroku jdbc

我撞墙了,没有帮助就无法通过。

我正在尝试使用Java Servlet对我的Android应用程序进行简单的登录和注册,问题是当我在Tomcat / Eclipse上本地运行它时一切正常但是当我在Heroku上部署WAR文件时服务器,数据库部分似乎根本不起作用。

我怀疑这实际上是驱动程序的问题,但是因为我通过Android应用程序连接到日志,所以无法获取日志。

我在freesqldatabase上部署了我的数据库。我将我的sql驱动程序放在tomcat directiory中并检查了一千次,这是在Tomcat库中。相当肯定JDBC Driver在部署时会导致问题,但我无法弄清楚为什么,应用程序的android部分一切正常。

这是servlet的代码:

Connection connection = null;
boolean check = false;
//this part does not work online 

try {
    Class.forName("driver");

    connection = DriverManager.getConnection("jdbc:mysql://sql7.freesqldatabase.com/sql7112115", "sql7112115", "xxxxxxxxxxx");
    response.getWriter().append("4");
    String query = "select * from userdata where username = ? and pass = ? ";
    response.getWriter().append("5");

    PreparedStatement statement = connection.prepareStatement(query);
    statement.setString(1, "Sue");
    statement.setString(2, "Pass1");

    ResultSet result = statement.executeQuery();
    check = result.next();
    connection.close();
} catch (ClassNotFoundException e) {
    System.out.print("Driver error");
} catch (SQLException e) {
    System.out.print("SQL error");
}

if (check) {
    response.getWriter().append("Login succesful");
} else {
    response.getWriter().append("Login unsuccesful");
}
}

2 个答案:

答案 0 :(得分:1)

我注意到的第一件事是Class.forName("driver")。通常,您需要规范的类名称 - 类似com.mysql.jdbc.Driver

答案 1 :(得分:0)

谢谢你的回答!事实证明,Heroku不允许使用这种构造 - 使用JDBC和第三方数据库来防止资源泄漏。我安装了他们的数据库,它工作正常!