如何设置JDBC连接的时区区域并避免找不到SqlException时区区域?

我在尝试创建一个 对象来处理来自命令行Java应用程序和Oracle数据库的连接时遇到以下问题。

因此,我有一个 类,其中包含 方法,这是一个:

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)

因此,我记得在其他与此数据库一起使用的应用程序中,有必要设置时区或类似的内容(但现在我无法访问这些应用程序)。

那么,如何解决此问题?我可以通过编程方式设置连接的时区吗?

特纳克斯

回答:

在尝试连接之前编写以下代码:

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驱动程序版本。

以上是 如何设置JDBC连接的时区区域并避免找不到SqlException时区区域? 的全部内容, 来源链接: utcz.com/qa/415539.html

回到顶部