Mã Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
không thể ném ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver
vì tên khác nhau. Có thể bạn đã thiết lập nó không đúng trong mã của mình không?
Tôi đã tải xuống sqljdbc41.jar từ trang web của họ và thấy rằng tên chính xác của lớp là com.microsoft.sqlserver.jdbc.SQLServerDriver
.
$ jar tf sqljdbc41.jar | grep SQLServerDriver.class
com/microsoft/sqlserver/jdbc/SQLServerDriver.class
Tôi vừa tìm thấy cả hai tên trên tài liệu web của Microsoft, vì vậy hoặc họ đã đổi tên lớp này (đã thay đổi gói của nó) tại một số điểm hoặc họ có lỗi trên một số tài liệu của họ.
Tất cả những gì bạn cần làm là thả .jar đó vào thư mục lib của Tomcat (ví dụ:apache-tomcat-7.0.67\lib
) và khởi động lại Tomcat.
Nếu bạn có tên lớp chính xác và đúng jar trong thư mục lib và vẫn gặp lỗi đó, tôi tự hỏi liệu bạn có mắc phải lỗi đánh máy nào đó trong thiết lập eclipse của mình không và việc triển khai từ eclipse bằng cách nào đó buộc cố gắng tải nó tên lớp bị hỏng. (Tôi không sử dụng Eclipse và tôi không biết về việc triển khai từ đó).
Hãy thử tạo một ứng dụng rất đơn giản (và đừng nói với eclipse về lớp trình điều khiển MS):
@WebServlet("/")
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Set response content type
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>" + "Welcome to the servlet!" + "</h1>");
try {
String server = "localhost";
String database = "testDB";
String password = "sapassword";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
Connection con = (Connection) DriverManager.getConnection(connectionUrl);
} catch (ClassNotFoundException e) {
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} catch (SQLException e){
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} finally {
out.println("<h1>" + "That's the end of the servlet!" + "</h1>");
}
}
}
Và chạy nó. Nếu bạn thấy đầu ra như:
Welcome to the servlet!
SQLServerException_The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
That's the end of the servlet!
Nó có nghĩa là trình điều khiển được tải đúng cách. Kết nối không thành công b / c Tôi không có phiên bản SQLServer hiện đang chạy để kiểm tra.