Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao lưu một bảng duy nhất với dữ liệu của nó từ cơ sở dữ liệu trong sql server 2008

  2. Kết quả SSMS thành Grid - CRLF không được bảo toàn trong sao chép / dán - bất kỳ kỹ thuật nào tốt hơn?

  3. Cách tạo bảng từ kết quả truy vấn chọn trong SQL Server 2008

  4. Nhiều hàng cho một giá trị được phân tách bằng dấu phẩy trong Sql Server

  5. Ngoại lệ ngoài bộ nhớ trong SQL 2008