2015-04-29 4 views
1

В Java я пытаюсь соединиться с базой данных Sybase через Java программы, как показано нижене в состоянии соединиться с базой данных Sybase

public static void connect() { 

     SybDriver sybDriver = null; 
     Connection conn; 

     try { 
      sybDriver = (SybDriver) Class.forName(
       // "com.sybase.jdbc3.jdbc.SybDriver").newInstance(); 
        "com.sybase.jdbc2.jdbc.SybDriver").newInstance(); 
      System.out.println("Driver Loaded"); 
      conn = DriverManager.getConnection(url, username, password); 
      boolean isTrue = conn.isValid(3); 
      System.out.println(isTrue); 

Но я получаю ниже исключение

Driver Loaded

Exception in thread "main" java.lang.AbstractMethodError: com.sybase.jdbc2.jdbc.SybConnection.isValid(I)Z 
    at connectionTry.connect(connectionTry.java:97) 
    at connectionTry.main(connectionTry.java:23) 

Я сделал анализ в google, что мне нужно, чтобы узнать, что jconnn.jar отсутствует, поскольку проблема заключается в методе isValid (I) Z нет в jconn2.jar нет там, пожалуйста, сообщите, как Чтобы преодолеть эту ошибку, пожалуйста.

+0

К какой версии базы данных вы хотите подключиться. Возможно, вам нужна другая версия драйвера JDBC. Здесь вы можете посмотреть [включить SQL в любом месте версии 9.0.2 - 16.0] (http://scn.sap.com/community/sql-anywhere/blog/2014/05/02/connecting-to-sql-anywhere-using -jdbc) – SubOptimal

ответ

2

Драйвер, который вы используете, основан на имени класса в stacktrace - драйвер JDBC 2. Метод isValid был добавлен в Java 6 (или: JDBC 4), поэтому вы не можете использовать его с драйвером, который его не реализует.

Вам либо необходимо перейти на новый драйвер: для этого обратитесь к Sybase или просто не вызывайте метод isValid. В коде, который вы показываете, нет причин называть его: вы только что создали соединение, конечно, оно действительно. Этот метод предназначен для проверки действительности долгоживущих подключений (например, в контексте пула соединений).

0

AbstractMethodError бросается, когда класс реализации не соответствует сигнатуре, определенной в абстрактном классе. Используйте совместимую версию реализации или, наоборот, избегайте методов, которые конфликтуют.

В идеале последняя версия драйверов должна иметь соответствующие реализации или вам нужно будет связаться с sybase, чтобы исправить это.

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