【发布时间】:2018-12-03 11:11:15
【问题描述】:
假装,我是网络开发的新手。我有一个通过 Jetty 部署的 Java Web 应用程序,但我遇到了一个让我非常困惑的问题。为了在 Web 应用程序中显示我的数据库中的数据,我必须建立一个数据库连接,当我对我的代码进行单元测试时我可以这样做,但是当我从 .jsp 页面调用相同的方法来填充 Web 应用程序时,我得到一个消息告诉我:
java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost:1433;integratedSecurity=true;database=TicketITBookingSystemDatabase;loginTimeout=30;
下面是其余的相关代码:
public void queryDatabase(String query){
ResultSet resultSet = null;
String connectionUrl = establishDatabaseConnection();
try (Connection connection = DriverManager.getConnection(connectionUrl);
Statement statement = connection.createStatement();) {
//Execute the sql statement passed as the query parameter.
resultSet = statement.executeQuery(query);
processResultSet(resultSet);
statement.close();
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace(); //why is this being hit but only on the web build
}
以及被调用的事件:
public List<String[]> getAllEvents(){
queryDatabase("EXEC dbo.sp_GetAllEventDetails");
return events;
}
谢谢。
【问题讨论】:
-
这听起来像是一个构建错误,实际上。也许 JDBC JAR 没有进入在 Jetty 上运行的应用程序的类路径中。你应该检查一下。顺便说一句,如果您正在测试一个实际的数据库,那么它不是一个单元测试,它是一个 集成 测试。
-
@TimBiegeleisen 感谢蒂姆的指导。你知道我将如何检查类路径吗?
-
打开你的 WAR/JAR 并四处寻找。像
jar -tvf your_jar.jar这样的东西应该可以工作。 -
不要在 Web 应用程序中使用
DriverManager。请改用正确配置的数据源。
标签: java jdbc web-applications jetty