2015-02-11 2 views
1

У меня есть следующая проблема с попыткой создать объект Connection для обработки соединения из командной строки приложения Java и базы данных Oracle.Как установить область часового пояса для подключения JDBC и избежать области часового пояса SqlException не найден?

Так что я Главный класс, который содержит основной() метод , это один:

import java.sql.*; 
import oracle.jdbc.OracleDriver; 

public class Main { 

    public static void main(String[] args) { 
     System.out.println("Hello World !!!"); 

     String partitaIVA = args[0]; 
     String nomePDF = args[1]; 

     Connection conn = null; 
     Statement stmt = null; 

     try { 
      Class.forName ("oracle.jdbc.OracleDriver"); 
      // Step 1: Allocate a database "Connection" object 
      conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:eme1", "myUserName", "myPswd"); // Oracle DB 

     } catch(SQLException ex) { 
      ex.printStackTrace(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
     } 
    } 
} 

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

conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:eme1", "myUserName", "myPswd"); // Oracle DB 

Я получаю это исключение:

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1 
ORA-01882: timezone region not found 

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385) 
    at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1018) 
    at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:497) 
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522) 
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) 
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:433) 
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:950) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639) 
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:662) 
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:560) 
    at java.sql.DriverManager.getConnection(DriverManager.java:582) 
    at java.sql.DriverManager.getConnection(DriverManager.java:185) 
    at Main.main(Main.java:21) 

Итак, я помню, что в некоторых других приложениях, которые работают с этой БД, необходимо было установить часовой пояс или что-то вроде этого (но теперь я не могу получить доступ к этим приложениям).

Итак, как я могу исправить эту проблему? Можно ли программно установить часовой пояс для моего подключения?

Tnx

ответ

6

Запись этого перед вашей попыткой подключения:

TimeZone timeZone = TimeZone.getTimeZone("yourTimeZone"); // e.g. "Europe/Rome" 
TimeZone.setDefault(timeZone); 

Таким образом, весь код будет:

try { 
    TimeZone timeZone = TimeZone.getTimeZone("yourTimeZone"); 
    TimeZone.setDefault(timeZone); 
    Class.forName("oracle.jdbc.OracleDriver"); 
    conn = DriverManager.getConnection("connStr", "myUserName", "myPswd"); 
    ... 

Если это не работает, то проблема может быть недействительным JDBC версия драйвера.

+0

Теперь я пытаюсь, вы можете сказать мне, какой пакет мне нужно импортировать, чтобы использовать объект TimeZone? – AndreaNobili

+1

java.util.TimeZone http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html – meskobalazs

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