我正在尝试通过JDBC连接到SQL Server - 因为我已经创建了一个名为Sahoodblib的类,它可以完成连接数据库和检索数据的工作。我创建了另一个名为Sahooclient的客户端 - 它提供了一个显示数据的前端。到目前为止,该系统运行良好。
现在,我正在尝试创建一个实例化Sahoodblib的servlet,然后我继续获取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 :(得分:2)
当您独立运行时,类com.microsoft.sqlserver.jdbc.SQLServerDriver位于类路径中。当你作为servlet运行时,它不是。
您需要弄清楚这些类路径是如何不同的。运行客户端时,是否在jar文件中提供包含SQL Server类的类路径?
我假设您在JAR文件中拥有所有SQL Server内容。如果您已将其解压缩到某处,则类路径需要解压缩的目录而不是jar文件本身。
您可以在http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html
中找到有关类加载器查找类的位置的更多信息