2016-11-11 2 views
0

Я написал простой Java-файл для обработки некоторого SQL, интегрированного с SQL-сервером.Драйвер SQL Server Java не работает в пути класса

Я загрузил соответствующий драйвер и сохранил JAR в правильном пути к классу, но он работает только при прямом запуске файла.

Я попытался назвать методы в классе SQL из другого класса, и я получаю следующее сообщение об ошибке:

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

Я понимаю, что этот вопрос хорошо документирован, но он не решает мою уникальную проблему, которая является то, что он работает внутри файла, но не извне.

Еще одна проблема заключается в том, что после закрытия программы и ее восстановления моя программа забывает, что JAR был добавлен как библиотека и требует, чтобы я снова добавил его, что не очень хорошо.

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

<CLASSES> 
     <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/da08b8cce7bbf903602a25a3a163ae252435795/asm-5.0.4.jar!/" /> 
     <root url="jar://$USER_HOME$/IdeaProjects/r3prototypingCFS/contracts/src/main/kotlin/com/r3corda/protocols/sqljdbc42.jar!/" /> 
    </CLASSES> 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
+0

который IDE сделать вас использовать? и как вы это сделаете, чтобы установить jar в classpath? –

+1

Если вы получаете 'ClassNotFoundException', то вы либо не имеете его в пути к классам, либо используете неправильное имя класса. –

+0

Так что, по сути, вы пытаетесь описать, что все работает нормально при запуске программы непосредственно из среды IDE, но как только вы создаете ее в банке, вы получаете исключение класса. Правильно? – Gimby

ответ

0

Используйте jdts драйвер ..Это работы с Sql Server 2014.

pom.xml

<dependencies> 
    <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> 
    <dependency> 
     <groupId>net.sourceforge.jtds</groupId> 
     <artifactId>jtds</artifactId> 
     <version>1.3.1</version> 
    </dependency> 

</dependencies> 

и ЦСИ

import java.sql.*; 

public class Main { 

    public static void main(String[] args) throws SQLException { 
    // write your code here 
     Connection conn = null; 
     ResultSet rs = null; 
     String url = "jdbc:jtds:sqlserver://localhost:1433/DATABASENAME"; 
     String driver = "net.sourceforge.jtds.jdbc.Driver"; 
     String userName = "username"; 
     String password = "yourpassword"; 
     try { 
      Class.forName(driver); 
      conn = DriverManager.getConnection(url, userName, password); 
      System.out.println("Connected to the database!!! Getting table list..."); 
      Statement stmt = conn.createStatement(); 

      String sql = "SELECT top 10 PhoneNumber,RegistrationDate\n" + 
        "  \n" + 
        " FROM tblProductRegistration"; 
      // ResultSet resultSet = stmt.executeQuery(sql); 

      // String selectSQL = "SELECT USER_ID, USERNAME FROM DBUSER WHERE USER_ID = ?"; 
      //Statement stmt = conn.createStatement(); 
      ResultSet resultSet = stmt.executeQuery(sql); 
      // preparedStatement.setInt(1, 1001); 
      // ResultSet resultSet = preparedStatement.executeQuery(); 
      //STEP 5: Extract data from result set 
      while(resultSet.next()){ 
       //Retrieve by column name 
       String PhoneNumber = resultSet.getString("PhoneNumber"); 
       String RegistrationDate = resultSet.getString("RegistrationDate"); 


       //Display values 
       System.out.print("PhoneNumber: " + PhoneNumber); 
       System.out.print("RegistrationDate: " + RegistrationDate); 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      conn.close(); 
      rs.close(); 
     } 

    } 
} 
+0

Я не могу честно полагать, что переход на использование jTDS сделает малейшую разницу. Вопросник пытается получить доступ к JAR-файлу. Все ваше предлагаемое решение, скорее всего, приведет к изменению названия класса, который он не может загрузить. –

+0

Извините ... но я также пробовал с драйвером jdbc с sql-сервером и в большинстве случаев проваливался. Затем переместитесь в jTds ... его классный и прохладный, чем jdc для сервера Sql. –

Смежные вопросы