简体   繁体   English

使用Java连接SQL Server 2005 Express

[英]Connect with SQL Server 2005 Express with Java

I have problem with my project. 我的项目有问题。 It's making me crazy - maybe you can help me. 这让我发疯-也许您可以帮助我。 I have a PC running SQL server 2005 Express and it works nicely. 我有一台运行SQL Server 2005 Express的PC,它运行良好。 In Eclipse I tested the following code to query the database: 在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 );
}

And it works fine and runs the query. 它工作正常并运行查询。 I downloaded the driver from Microsoft and added the sqljdbc4.jar to the class path. 我从Microsoft下载了驱动程序,并将sqljdbc4.jar添加到了类路径。

The project that must really access the database is another version of Eclipse (Eclipse SDK 3.2). 必须真正访问数据库的项目是Eclipse的另一个版本(Eclipse SDK 3.2)。 It runs a web service which need to make queries to the database. 它运行一个Web服务,该服务需要查询数据库。 I added the same jar to the class path and executing the same code, the line: 我在类路径中添加了相同的jar并执行了以下代码:

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

throws this exception: 抛出此异常:

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver at 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.banquito.Sucursales.SucursalesSOAPImpl.getConfigPaciente(SucursalesSOAPImpl.java:44) at 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) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:1 java.lang.ClassNotFoundException:org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java处的com.microsoft.sqlserver.jdbc.SQLServerDriver在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1438) :1284)at java.lang.Class.forName0(本机方法)at com.banquito.Sucursales的java.lang.Class.forName(未知源).com.banquito.Sucursales的HolaMundo.pruebaBD(HolaMundo.java:42) .com.banquito上的.SucursalesSOAPImpl.getConfigPaciente(SucursalesSOAPImpl.java:44)。源)位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源),位于org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)位于java.lang.reflect.Method.invoke(未知源) org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:1 86) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) at org.apache.axis.strategies.InvocationStrategy.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 86)位于org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)位于org.apache.axis.SimpleChain的org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) org.apache.axis上的.doVisiting(SimpleChain.java:118).org上org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)上的.SimpleChain.invoke(SimpleChain.java:83)。 org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)处的apache.axis.server.AxisServer.invoke(AxisServer.java:281)在javax.servlet.http.HttpServlet.service(HttpServlet。 org.apache.axis.transport.http.AxisServletBase.java的java:647)(AxisServletBase.java:327)org.apache.catalina.core的javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)的org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)的.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)组织 .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) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at 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) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)上的.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)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。 org.apache.coyote上的http11.Http11Processor.process(Http11Processor.java:879)。org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint)上的http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 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)在java .lang.Thread.run(未知来源)

Is seems Eclipse can't resolve the export. 看来Eclipse无法解决导出。 Can somebody help me with that? 有人可以帮我吗? Thanks 谢谢

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

It looks like you are using some servlet container to run your app. 您似乎正在使用某些servlet容器来运行您的应用程序。 So it better not to create connections to database directly from your app but create datasource in container and use it from your code. 因此,最好不要直接从您的应用程序创建与数据库的连接,而应在容器中创建数据源并从代码中使用它。

Then you'll need to put jar with JDBC driver into lib folder of your container. 然后,您需要将带有JDBC驱动程序的jar放入容器的lib文件夹中。

jar file seems to be missing, clean the project. jar文件似乎丢失,请清理项目。 If it still there try to create instance of com.microsoft.sqlserver.jdbc.SQLServerDriver or any other class present in that jar, you'll get the answer. 如果仍然尝试创建com.microsoft.sqlserver.jdbc.SQLServerDriver或该jar中存在的任何其他类的实例,您将得到答案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM