可能吗? 1) 使用 ojdbc5 或 ojdbc6 连接到 Oracle 8i 2) 多个 ojdbc jar
我正在构建一个应用程序,该应用程序整理来自多个数据源的数据。在这些数据源中,我们有多个正在运行的 Oracle 实例。
我发现连接到 Oracle 8i 实例的唯一方法是使用 ojdbc14.jar 和以下内容:
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$HOST)(PORT=$PORT)))(CONNECT_DATA=(SID=$SID)))"
Class.forName(driver);
Connection c = DriverManager.getConnection(url, $USER, $PASSWORD);
c.close();
当我尝试更新到 ojdbc5.jar 或 < em>ojdbc6.jar,使用相同的代码,我得到一个 ArrayIndexOutofBoundsException。如果我只使用 URL“jdbc:oracle:thin:$user/$password@$host:$port:$sid”,情况也是如此,它确实适用于我连接到的最新 Oracle 实例。
我不想被迫使用旧的 ojdbc14.jar(特别是当我使用 Java 6 时),因为我可能很快就必须支持更高的 Oracle 数据库。
所以,我希望以下两种情况之一是可能的:
1)有一个连接字符串我只是忽略了它可以用来连接到 Oracle 8i w/更新的 OJDBC jar。
2) 我的类路径上可以有多个 OJDBC jar,这样我就可以在异常情况下使用 ojdbc14.jar,并在其他地方使用 ojdbc6.jar。当然,这里的技巧是弄清楚如何指定连接需要使用哪个 jar 中的“oracle.jdbc.OracleDriver”类。
有什么想法吗?
I'm building an application which is collating data from multiple data sources. Of these data sources, we have multiple instances of Oracle running.
I find that the only way I can connect to my Oracle 8i instance is by using the ojdbc14.jar and the following:
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$HOST)(PORT=$PORT)))(CONNECT_DATA=(SID=$SID)))"
Class.forName(driver);
Connection c = DriverManager.getConnection(url, $USER, $PASSWORD);
c.close();
When I try to update to ojdbc5.jar or ojdbc6.jar, using the same code, I get an ArrayIndexOutofBoundsException. Ditto if I use just the URL "jdbc:oracle:thin:$user/$password@$host:$port:$sid", which does work against the more recent Oracle instances I'm connecting to.
I'd rather not get locked into having to use the older ojdbc14.jar (especially as I'm using Java 6) as I might have to support higher Oracle databases quite soon in the future.
So, I'm hoping one of two scenarios is possible:
1) There's a connection string I'm simply overlooking which can use to connect to Oracle 8i w/ more recent OJDBC jars.
2) I can have multiple OJDBC jars on my classpath so that I can use ojdbc14.jar on an exception basis and ojdbc6.jar everywhere else. The trick here, of course, is figuring out how to specify which jar the connection needs to use the "oracle.jdbc.OracleDriver" class from.
Any thoughts?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
出于好奇,我通过隔离的类加载器实现了您的第二种方法。它似乎工作:
使用如下(驱动程序 jar 不应位于主类路径中):
Just out of curiosity I implemented your second approach via isolated classloader. It seems to be working:
Used as follows (driver jars shouldn't be located in the main classpath):