【问题标题】:INSERT from servlet throws java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver来自 servlet 的 INSERT 抛出 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
【发布时间】:2012-05-02 06:07:11
【问题描述】:

我正在使用下面的代码从 servlet 连接到 SQL Server 2005 数据库。但它抛出了以下异常:

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver 

代码片段:

import java.sql.*;
import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class InsertServlet extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
    doGet(request,response);

}

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
    response.setContentType("text/html");
    PrintWriter pw=response.getWriter();
    EmpDetailBean empdetailbean=new EmpDetailBean();
    Connection con=null;
    PreparedStatement pstmt2=null;
    //ResultSet rs=null;
    String employeecode=request.getParameter("employeecode");
    pw.println(employeecode);
    empdetailbean.setEmployeecode(employeecode);
    try
    {   //String emp_code=(String)session.getAttribute("empcode");
        //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        //String url = "jdbc:sqlserver://localhost;" +  
               // "databaseName=test;user=sa;password= ;"; 

        //con=DriverManager.getConnection("Jdbc:Odbc:leave1");
        con=DriverManager.getConnection("jdbc:sqlserver://10.217.7.3;databaseName=test;user=sa;password=123;");
        String query1="insert into leavetype(dbo.empcode) values(?)";

        pstmt2=con.prepareStatement(query1);
        pstmt2.setString(1,empdetailbean.getEmployeecode());

        int k=pstmt2.executeUpdate();
        System.out.println(k);
        pstmt2.close();    

    }
    catch(Exception e)
    {   pw.println("exception"+ e);

    }


}

}

日志文件显示

May 2, 2012 11:34:19 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
May 2, 2012 11:34:19 AM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()

【问题讨论】:

  • 需要将驱动jar放入WEB-INF/lib
  • 我有 sqljdbc_4.0\enu。我已经执行了 xa_install 并将 sqljdbc_xa.dll 放入 mysql2005 的 bin 文件夹中。我将 sqljdbc4.jar 文件放入 enu 中,我在哪里放。

标签: sql-server-2005 servlets jdbc


【解决方案1】:

如果您想使用com.microsoft.sqlserver.jdbc.SQLServerDriver 作为驱动程序,则需要sqljdbc.jar 存在于您的类路径中,即WEB-INF\lib

如果您想使用 Jtds 驱动程序,请检查此 link 以获取驱动程序和数据库 URL

【讨论】:

    【解决方案2】:

    您部署的 war 文件中似乎缺少 JDBC 连接的 Jar 文件。您能否确保 lib 文件与 war 文件正确打包?

    【讨论】:

    • lib文件打包路径为D:\apache-tomcat-6.0.35\lib.jtds-1.2.2.jar是哪个jar文件
    • @AbhiruchiSharma 你们是在使用 JDTS jar,那么我认为驱动程序类名称仍然是“net.sourceforge.jtds.jdbc.Driver”,否则如果您使用的是 MS JDBC,那么该 jar 文件应该在那里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多