2016-02-10 2 views
0

Мне нужна помощь с ODBC-JDBC Интерфейс CSV, с 32Bit Java 1.7.0_72java.sql.SQLException: Не найдено подходящего драйвера для jdbc: odbc: Driver = {Microsoft Text Driver (* .txt; * .csv)}; DBQ = D: Users

я получил этот код

private void connectToCSV(String file) { 
    try { 
     debug.println(path + file +" "+this.file); 
     if (this.file == null){ 
      this.file = file; 

      gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path); 

     } 
     if (this.file != file){ 

     this.file = file; 
     gfdiConnection = DriverManager.getConnection("jdbc:odbc:DRIVER={" + driverCSV + "};DBQ=" + path); 
     } 
    } catch (SQLException e) { 
     debug.println("Error while trying to connect to CSV"); 
     e.printStackTrace(); 
    } 
} 

, но я не получил его запуска.

java.sql.SQLException: No suitable driver found for jdbc:odbc:Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=D:\Input\ 

я нашел предложение с

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path); 

, но это не работает здесь.

java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 

Я проверил также имя драйвера с

C:\Windows\SysWOW64\odbcad32.exe 

так, Что проблема с драйвером?

+0

Почему вы используете драйвер типа 1.Драйверы типа 1 не рекомендуются и делают ваш Java-код не переносным. Oracle не рекомментирует их использование, а поддержка для них вынимается в JDK 8. Пожалуйста, обратитесь к http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/bridge.html. Если вам нужен драйвер pr jdbc, обратитесь к сторонним драйверам для CSV, например http://csvjdbc.sourceforge.net/ –

+1

, вы уверены, что используете jdk 1.7, а не jdk1.8? – Abdelhak

+0

Попросите ваше приложение отобразить значение, возвращаемое 'System.getProperty (" java.version ")'. Что он вам показывает? –

ответ

0

System.getProperty("java.version") сообщил "1.8.0_66", так что приложения фактически выполнялся под Java 8, который отказался от моста JDBC-ODBC.

0

ODBC требует установки активного элемента управления, который имеет дело с предоставлением соединения, то есть программа, которая напрямую взаимодействует с ODBC, должна быть уверенной, что эти драйверы установлены в системе. JDBC наоборот требует, чтобы библиотека (файл jar обычно называлась коннектором) находилась в пути к классам, который обеспечивает это соединение.

Что вы делаете пытается установить соединение с ODBC через соединение JDBC, то есть предположительно вам нужно как контрольной ACTIVEX для установки, а также разъем JDBC в пути к классам. Имя соединителя правильное, но оно также должно быть в classpath.

Что вам нужно сделать, так это найти файл jar, предоставляющий мост jdbc-odbc, и убедиться, что он находится в вашем пути к классам при запуске вашей программы. У вас могут быть другие проблемы, но, по крайней мере, если вы не видите исключение ClassNotFoundException, вы исправили недостающую проблему драйвера jdbc.

В конечном итоге вы должны рассмотреть альтернативное решение для использования ODBC в Java.

+0

Мост JDBC-ODBC включен в Windows версии Java 7, поэтому нет необходимости «находить» JAR или добавлять его в CLASSPATH. –

+0

@GordThompson Ну, тогда я предполагаю, что проблема уже решена тогда, не так ли? О, подождите, это не так. – Neil

0

Проверьте, если у вас есть в пути компоновки Java соответствующий JAR, чтобы предотвратить ошибки в проекте

0

Я добавил rt.jar вручную построить путь, теперь больше нет ошибок с «sun.jdbc.odbc.JdbcOdbcDriver », но я получил NullPointerException

Exception in thread "Thread-1" java.lang.NullPointerException 
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(Unknown Source) 
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at database.GfDIConnect.connectToCSV(CSVConnect.java:85) 
at database.GfDIConnect.queryCSV(CSVConnect.java:147) 
at database.GfDIConnect.gfdiBTRSTToPostgreSQL(CSVConnect.java:297) 
at view.MainRefactor$58.run(MainRefactor.java:2434) 
at java.lang.Thread.run(Unknown Source) 

CSVConnect.java:85 является

gfdiConnection = DriverManager.getConnection("jdbc:odbc:Driver={"+ driverCSV + "};DBQ=" + path); 

так было это решение очень быстро и грязно?

EDIT

Я нашел причину, по-прежнему библиотеки пути сборки - JRE System Library на 1.8 JRE, после перехода на 1.7 он работает

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