2016-01-01 4 views
1

Я хочу подключиться к базе данных Oracle через jdbc с помощью ojdbc6.Ошибка при подключении через jdbc к базе данных Oracle 8i с использованием драйвера ojdbc6

У меня есть Oracle 10g на виртуальной машине и Oracle 8i на работе. Я пытаюсь создать java-приложение, которое позволяет мне подключаться к базе данных и выполнять некоторые инструкции SQL.

С Oracle 10g все прекрасно, но с оракула 8i (8.1.7) я получаю эту ошибку

java.lang.ArrayIndexOutOfBoundsException: 4 
at oracle.jdbc.driver.T4C8TTIdty.<init>(T4C8TTIdty.java:488) 
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1199) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:340) 
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553) 
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528) 
at java.sql.DriverManager.getConnection(DriverManager.java:582) 
at java.sql.DriverManager.getConnection(DriverManager.java:185) 
at jdbcon$4.actionPerformed(jdbcon.java:235) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
at java.awt.Component.processMouseEvent(Component.java:6297) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275) 
at java.awt.Component.processEvent(Component.java:6062) 
at java.awt.Container.processEvent(Container.java:2039) 
at java.awt.Component.dispatchEventImpl(Component.java:4660) 
at java.awt.Container.dispatchEventImpl(Container.java:2097) 
at java.awt.Component.dispatchEvent(Component.java:4488) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166) 
at java.awt.Container.dispatchEventImpl(Container.java:2083) 
at java.awt.Window.dispatchEventImpl(Window.java:2489) 
at java.awt.Component.dispatchEvent(Component.java:4488) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668) 
at java.awt.EventQueue.access$400(EventQueue.java:81) 
at java.awt.EventQueue$2.run(EventQueue.java:627) 
at java.awt.EventQueue$2.run(EventQueue.java:625) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$3.run(EventQueue.java:641) 
at java.awt.EventQueue$3.run(EventQueue.java:639) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:638) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

И эту линию StackTrace (jdbcon это мое имя класса)

at jdbcon$4.actionPerformed(jdbcon.java:235) 

Отвезите меня к этой строке кода

con=DriverManager.getConnection("jdbc:oracle:thin:@"+adresse+":"+port+":"+bd,user,pass); 

Исходный код

try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      con=DriverManager.getConnection("jdbc:oracle:thin:@"+adresse+":"+port+":"+bd,user,pass); 
       if(con.isValid(10)) 
        //System.out.println("Connexion réussie"); 
        JOptionPane.showMessageDialog(null, "Connexion réussie"); 

Примечание

, когда я использую неправильно SID это дает мне эту ошибку:

java.sql.SQLException: Listener refused the connection with the following error: 
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 

Это означает, что хозяин, Порт в порядке. И когда я использую правый SID, я получаю предыдущую ошибку.

Эта проблема только с oracle 8i.

+0

Либо у водителя есть ошибка, либо он не поддерживает версию 8 (которая довольно старая) Oracle. –

+0

Какой драйвер jdbc вы используете (какая версия jar) ?, вам, вероятно, нужно переключить версию драйвера. –

+0

Я использую ojdbc6, это какая причина этой проблемы? –

ответ

2

Oracle версии 8 не поддерживается ojdbc6 и ojdbc5 драйверами (это для более поздней версии оракула), для подключения Вам необходимо:

classes12.zip драйверы, которые могут быть загружены из Oracle8i JDBC Drivers

1

вы, очевидно, нуждаются в jdbc для oracle8i, потому что oracle10g и oracle8i don, t используют один и тот же драйвер

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

  • Нет связанных вопросов^_^