我撞墙了,没有帮助就无法通过。
我正在尝试使用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");
}
}
答案 0 :(得分:1)
我注意到的第一件事是Class.forName("driver")
。通常,您需要规范的类名称 - 类似com.mysql.jdbc.Driver
。
答案 1 :(得分:0)
谢谢你的回答!事实证明,Heroku不允许使用这种构造 - 使用JDBC和第三方数据库来防止资源泄漏。我安装了他们的数据库,它工作正常!