Подключение к SQL Server 2005 Express с помощью Java

#java #sql #sql-server #eclipse #jdbc

#java #sql #sql-сервер #eclipse #jdbc

Вопрос:

У меня проблема с моим проектом. Это сводит меня с ума — может быть, вы сможете мне помочь. У меня есть компьютер под управлением SQL server 2005 Express, и он отлично работает. В 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). Он запускает веб-службу, которой необходимо выполнять запросы к базе данных. Я добавил тот же jar в путь к классу и, выполнив тот же код, строку:

Class.forName(«com.microsoft.sqlserver.jdbc.SQLServerDriver»);

выдает это исключение:

java.lang.Исключение ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver в org.apache.catalina.loader.Загрузчик веб-приложений.loadClass(WebappClassLoader.java:1438) в org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284) на java.lang.Class.forName0 (собственный метод) на java.lang.Class.forName (неизвестный источник) на com.banquito.Sucursales.HolaMundo.pruebaBD(HolaMundo.java:42) на com.banquito.Sucursales.SucursalesSOAPImpl.getConfigPaciente(SucursalesSOAPImpl.java:44) на com.banquito.Sucursales.SucursalesSOAPSkeleton.getConfigPaciente (SucursalesSOAPSkeleton.java:80) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) в sun.reflect.Делегирование methodaccessorimpl.invoke (неизвестный источник) на java.lang.reflect.Метод.вызов (неизвестный источник) в 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.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.Отправьте сообщение (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.Цепочка фильтров приложений.Выполните doFilter(ApplicationFilterChain.java:188) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213) в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) в организации.apache.catalina.valves.Ошибка reportvalve.invoke(ошибка reportvalve.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) в org.apache.coyote.Http11Processor.process(Http11Processor.java: 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) в org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) на java.lang.Thread.run(Неизвестный источник)

Похоже, Eclipse не может разрешить экспорт. Кто-нибудь может мне с этим помочь? Спасибо

Комментарии:

1. Вы загрузили драйвер JDBC для SQL Server ? Поскольку код / исключение сообщает, что не может найти драйвер JDBC

2. Когда вы говорите, что добавили его в classpath, вы имеете в виду, что вы поместили его в WEB-INF / lib контейнера сервлета?

Ответ №1:

если вы используете eclipse, щелкните настроить путь сборки, добавьте этот jar в приложение и повторите попытку

Ответ №2:

файл jar, похоже, отсутствует, очистите проект. Если он все еще там, попробуйте создать экземпляр com.microsoft.sqlserver.jdbc.SQLServerDriver или любого другого класса, присутствующего в этом jar, вы получите ответ.

Ответ №3:

Похоже, вы используете какой-то контейнер сервлета для запуска своего приложения. Поэтому лучше не создавать подключения к базе данных непосредственно из вашего приложения, а создать datasource в контейнере и использовать его из вашего кода.

Затем вам нужно поместить jar с драйвером JDBC в lib папку вашего контейнера.