所以我尝试过使用股票Play! 2.2配置MySql数据库连接。不幸的是,当使用股票数据库(h2)和MySql时,那里的指南不太有用。所以,我编写了一个单独的模型来处理MySql连接。它间歇性地工作,我试图找出它为什么不能一直工作。
这是“连接”功能
String sourceSchema = "db";
String databaseHost = "host";
String databaseURLSource = "jdbc:mysql://" + databaseHost + "/" + sourceSchema;
String databaseUserIDSource = "userid";
String databasePWDSource = "password";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(databaseURLSource,
databaseUserIDSource, databasePWDSource);
return true;
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
Logger.error("SQLException: " + e.getMessage());
}
我的所有凭据都是正确的(这里显然已更改)接下来,在我的lib文件夹中,我有
mysql-connector-java-5.1.21-bin.jar
到位。
接下来,在我的Build.scala中,我在appDependencies下有这个:
"mysql" % "mysql-connector-java" % "5.1.21"
当我尝试验证连接时,使用:
public boolean isConnected() {
return conn != null;
}
连接失败(间歇性)然后给我:
SQLException: Before start of result set
有时候:
SQLException: No Suitable driver found for mysql ...
这是我的查询执行方式:
String qs = String.format("SELECT * FROM community_hub.alert_journal LIMIT("+ from +","+ to +")");
String qscount = String.format("SELECT COUNT(*) AS count FROM community_hub.alert_journal");
try {
if (isConnected()) {
Statement stmt = conn.createStatement();
//obtain count of rows
ResultSet rs1 = stmt.executeQuery(qscount);
//returns the number of pages to draw on index
int numPages = returnPages(rs1.getInt("count"),rpp);
NumPages(numPages);
ResultSet rs = stmt.executeQuery(qs);
while (rs.next())
{
AlertEntry ae = new AlertEntry(
rs.getTimestamp("date"),
rs.getString("service_url"),
rs.getString("type"),
rs.getString("offering_id"),
rs.getString("observed_property"),
rs.getString("detail")
);
list.add(ae);
}
rs.close();
disconnect();
} else {
System.err.println("Connection was null");
}
}
catch (Exception e)
{
e.printStackTrace();
}
帮助?
谢谢!
答案 0 :(得分:0)
mysql错误会告诉你什么吗?
第一个错误" SQLException:在结果集开始之前"看起来不完整。也许错误日志包含完整的消息,或者您可以
第二个" SQLException:没有为mysql找到合适的驱动程序"清楚地表明了类路径问题。
通常连接池(如c3p0或BoneCP)建议使用验证查询来确定连接是否有效(例如"选择1"对于mysql)。这可能有助于确保连接正常而不依赖于驱动程序?