使用Java与SQL Server 2005 Express连接

时间:2011-05-06 17:39:36

标签: java sql sql-server eclipse jdbc

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

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服务,需要对数据库进行查询。 我将相同的jar添加到类路径并执行相同的代码,即行:

  

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

抛出此异常:

  

java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver       在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1438)       在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284)       at java.lang.Class.forName0(Native Method)       at java.lang.Class.forName(Unknown Source)       在com.banquito.Sucursales.HolaMundo.pruebaBD(HolaMundo.java:42)       在com.banquito.Sucursales.SucursalesSOAPImpl.getConfigPaciente(SucursalesSOAPImpl.java:44)       在com.banquito.Sucursales.SucursalesSOAPSkeleton.getConfigPaciente(SucursalesSOAPSkeleton.java:80)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)       at java.lang.reflect.Method.invoke(Unknown Source)       在org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)       在org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)       在org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)       在org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)       在org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)       在org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)       在org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)       在org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)       在org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)       在javax.servlet.http.HttpServlet.service(HttpServlet.java:647)       在org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)       在javax.servlet.http.HttpServlet.service(HttpServlet.java:729)       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)       在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)       在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)       在org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)       在org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)       at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:689)       在java.lang.Thread.run(未知来源)

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

3 个答案:

答案 0 :(得分:1)

如果您正在使用eclipse,请单击配置构建路径,并将此jar添加到tha应用程序中,然后重试

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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