2011-05-06 118 views
0

我的项目有问题。这让我发疯 - 也许你可以帮助我。 我有一台运行SQL Server 2005 Express的PC,它工作得很好。 在Eclipse我测试了以下代码来查询数据库:用Java连接SQL Server 2005 Express

String user= "sa"; 
String pass= "root"; 
Statement smt; 
ResultSet rs = null; 
System.out.println("2"); 

try { 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 version 
}catch (Exception e){} 

try { 
    System.out.println("3"); 
    Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=master",user,pass); 
    smt = con.createStatement(); 
    smt.executeQuery("SELECT * from test"); 
    rs = smt.getResultSet(); 

    while (rs.next()) { 
    printentry(rs); 
    } 

    con.close() 
    System.out.println("5"); 
} catch (SQLException excepcionSql) { 
    JOptionPane.showMessageDialog(null, excepcionSql.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); 
} 

并能正常工作和运行查询。我从Microsoft下载驱动程序并将sqljdbc4.jar添加到类路径中。

必须真正访问数据库的项目是Eclipse的另一个版本(Eclipse SDK 3.2)。它运行一个需要查询数据库的Web服务。 我添加了相同的罐子类路径并执行相同的代码,行:

的Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

抛出此异常:

抛出java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1438 ) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com .banquito.Sucursales.HolaMundo.pruebaBD(HolaMundo.java:42) at com.banquit o.Sucursales.SucursalesSOAPImpl.getConfigPaciente(SucursalesSOAPImpl.java:44) 在com.banquito.Sucursales.SucursalesSOAPSkeleton.getConfigPaciente(SucursalesSOAPSkeleton.java:80) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在sun.reflect .NativeMethodAccessorImpl.invoke(Unknown Source) at org.apache.axis.providers.java.RPCProvider。在java.lang.reflect.Method.invoke(Unknown Source) 处的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源) 。 invokeMethod(RPCProvider.java:397) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java: 323) at org.apache.axis.strategies.Invocation Strategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org。 apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http。 AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core。 StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve。的java:117) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 在org.apache。 coyote.http11.Http11Processor.process(Http11Processor.java:879) at org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint。 processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool。 java:689) at java.lang.Thread.run(Unknown Source)

看来Eclipse似乎无法解析导出。有人可以帮助我吗? 谢谢

+0

您是否下载了[SQL Server JDBC驱动程序](http://msdn.microsoft.com/zh-cn/sqlserver/aa937724)?因为代码/异常说它找不到JDBC驱动程序 – 2011-05-06 17:42:08

+1

当您说您将它添加到类路径中时,是否将它放在servlet容器的WEB-INF/lib中? – DaveH 2011-05-06 17:51:52

回答

0

jar文件似乎丢失了,清理项目。如果它仍然在那里尝试创建com.microsoft.sqlserver.jdbc.SQLServerDriver的实例或该jar中存在的任何其他类,您将得到答案。

1

,如果你使用eclipse单击配置构建路径,并添加这个罐子到塔的应用程序,然后再试一次

0

它看起来像你使用的是一些servlet容器来运行你的应用程序。所以最好不要直接从应用程序创建数据库连接,而是在容器中创建数据源并从代码中使用它。

然后,您需要将带有JDBC驱动程序的jar放入容器的lib文件夹中。