Comment définir le fuseau horaire de la région pour la Connexion JDBC et d'éviter la SqlException fuseau horaire de la région n'est pas trouvée?
J'ai le problème suivant en essayant de créer un Connexion objet pour gérer la connexion à partir d'une ligne de commande de l'application Java et une base de données Oracle.
J'ai donc un Principal classe qui contient la main() méthode, celui-ci:
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.
}
}
}
Le problème est que lorsque j'essaie d'exécuter cette instruction:
conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:eme1", "myUserName", "myPswd"); //Oracle DB
- Je obtenir cette exception:
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)
Donc, je me souviens que dans certaines autres applications qui fonctionne avec cette DB, il est nécessaire de régler le fuseau horaire ou quelque chose comme ça (mais maintenant je ne peux pas accéder à ces applications).
Alors, comment puis-je résoudre ce problème? Puis-je définir par programmation le fuseau horaire pour ma Connexion?
Tnx
Vous devez vous connecter pour publier un commentaire.
Écrire cela avant de votre tentative de connexion:
Donc tout le code serait:
Si cela ne fonctionne pas, le problème peut être une défaillance du pilote JDBC version.
setDefault()
? La javadoc dit "Définit le Fuseau horaire qui est retourné par la getDefault méthode.": dans quelle mesure cela affecte d'autres l'exécution de code? Est-il limité à la seule demande que l'appel ou à l'ensemble de la JVM et pourrait potentiellement modifier les autres applications en cours d'exécution à l'intérieur (c'est à dire dans un conteneur de servlet)?