冒充,我是Web开发的新手。我有一个通过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;
}
谢谢。
答案 0 :(得分:0)
您必须在Jetty的类路径上添加数据库驱动程序。
检查是否存在。
答案 1 :(得分:0)
问题是您没有将驱动程序jar添加到Jetty的类路径中,或者-如果您将其与应用程序一起部署-您需要使用Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
显式加载驱动程序。 JDBC自动驱动程序加载仅在驱动程序位于初始类路径上时起作用,而不是在上下文类路径上。
但是,通常不建议直接从Web应用程序使用DriverManager
。通常使用DataSource
更好,尤其是在数据源实现提供连接池的情况下。