有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法通过Servlet连接到SQL Server,但可以在本地连接到它

我试图通过JDBC连接到SQL Server——为此,我创建了一个名为Sahoodblib的类,该类负责连接到数据库并检索数据。我创建了另一个客户端,称为Sahooclient——它提供了一个显示数据的前端。到目前为止,该系统运行良好

现在,我正在尝试创建一个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();
}

共 (1) 个答案

  1. # 1 楼答案

    这个班是com。微软sqlserver。jdbc。单独运行时,SQLServerDriver位于类路径中。当您作为servlet运行时,情况并非如此

    您需要弄清楚这些类路径是如何不同的。运行客户机时,是否在jar文件中提供包含SQL Server类的类路径

    • 如果您这样做了,您需要查看web服务器并找出如何为其提供相同的jar文件;通常,您会将其放在WEB应用程序的WEB-INF/lib目录中
    • 如果没有,它将包含在JVM的一个默认位置。客户端和web服务器是否使用相同的JVM

    我在这里假设您将所有SQL Server内容都放在一个JAR文件中。如果您在某个地方解包了它,那么您的类路径需要解包的目录,而不是jar文件本身

    您可以找到有关类加载器在http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html中查找类的位置的更多信息