Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法通过Servlet连接到SQL Server,但可以在本地连接到它_Java_Sql Server_Servlets_Jdbc - Fatal编程技术网

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

Java 无法通过Servlet连接到SQL Server,但可以在本地连接到它,java,sql-server,servlets,jdbc,Java,Sql Server,Servlets,Jdbc,我试图通过JDBC连接到SQL Server——为此,我创建了一个名为Sahoodblib的类,该类负责连接到数据库并检索数据。我创建了另一个客户端,称为Sahooclient——它提供了一个显示数据的前端。到目前为止,该系统运行良好 现在,我正在尝试创建一个servlet,它实例化Sahoodblib,然后我一直得到ClassNotFoundException,我跟踪它,在Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”)

我试图通过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();
}

独立运行时,类com.microsoft.sqlserver.jdbc.SQLServerDriver位于类路径中。当您作为servlet运行时,情况并非如此

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

  • 如果您这样做了,您需要查看web服务器并找出如何为其提供相同的jar文件;通常,您会将其放在WEB应用程序的WEB-INF/lib目录中
  • 如果没有,它将包含在JVM的一个默认位置。客户端和web服务器是否使用相同的JVM
我在这里假设您将所有SQL Server内容都放在一个JAR文件中。如果您在某个地方解包了它,那么您的类路径需要解包的目录,而不是jar文件本身


您可以在

中找到有关类加载器将在何处查找类的更多信息。我们需要知道您如何连接到数据库?检查web inf/lib是否需要sqlserver驱动程序的jar在我第一次创建客户机时,jar文件已经包含在内,客户机工作正常。只有当我尝试通过servlet连接并在web浏览器上显示结果时,我才会出现此异常。当您从未使用它时,
uname
pwd
有什么用?请检查您的web应用程序
web-INF/lib
文件夹。它包含您的SQL jar吗?