2011-04-02 157 views
0

我想通过JDBC连接到SQL Server - 为此我创建了一个名为Sahoodblib的类,它可以连接到数据库并检索数据。我创建了另一个客户端,称为Sahooclient - 它提供了显示数据的前端。迄今为止该系统的运作非常好。无法通过Servlet连接到SQL Server,但可以连接到本地

现在,我想创建一个servlet,它实例Sahoodblib,然后我不断收到ClassNotFoundException的,我追查回来,我会在Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

现在例外,这已经困扰我,因为这当我在本地调用方法时工作得很好,但是当我通过浏览器执行时会给我带来问题。我已经为SQL Server启用了TCP/IP和所有其他连接。

这是我得到的错误:

/* Initialize the servlet. */ 
@Override 
public void init(ServletConfig config) throws ServletException { 
    super.init(config); 
    sdb = new Sahoodblib("ism6236","ism6236bo"); 
} 

编辑:

这是我如何连接到DB:

public Sahoodblib(String uname, String pwd) { 
    try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String url = "jdbc:sqlserver://localhost;" + 
      "databaseName=Travel;user=ism6236;password=ism6236bo;"; 
     cn = DriverManager.getConnection(url); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(Sahoodblib.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (SQLException ex) { 
     Logger.getLogger(Sahoodblib.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    set_max_tid(); 
} 
+0

我们需要知道**更多信息如何**你连接到您的数据库? – 2011-04-02 07:07:26

+0

检查web-inf/lib是否需要sqlserver驱动程序的jar <> – blob 2011-04-02 07:28:26

+0

当我第一次创建客户端并且客户端工作正常时,jar文件已经包含在内。只有当我尝试通过servlet进行连接并在Web浏览器上显示结果时,我才会得到此异常。 – user688682 2011-04-02 07:36:35

回答

2

类com.microsoft.sqlserver.jdbc.SQLServerDriver在独立运行时位于类路径中。这不是当你作为一个servlet运行时。

您需要弄清楚这些类路径的不同之处。当你运行客户端时,你是否在jar文件中给出了一个包含SQL Server类的类路径?

  • 如果你这样做,你需要看看Web服务器,并找出如何提供与其相同的jar文件;通常你把它放在你的web-app的WEB-INF/lib目录下。
  • 如果不这样做,它将包含在JVM的默认位置之一中。客户端和Web服务器是否使用相同的JVM?

我在这里假设你有一个JAR文件中的所有SQL Server东西。如果你已经解压到某个地方,你的类路径需要解压缩的目录而不是jar文件本身。

你可以找到其中的类加载器将寻找班http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html