关于java:Oracle与JDBC的连接

Oracle connection with JDBC

所以我使用 JDBC 和 mySQL 连接到 java 应用程序中的测试 mySQL 数据库,一切正常。生产最终将在 oracle 数据库上。看来我可以更改驱动程序和连接来完成这项工作。

我得到了这个:/usr/local/oracle/product/10.1.0/client_1/bin/sqlplus -S user/password@SERVICE @something.sql

所以我假设这是在本地访问它的方式。我也得到了主人。所以我认为连接 url 将转换为以下内容,我可以这样做:

String url ="jdbc:oracle:thin:user/password@//host/SERVICE"

Connection c = DriverManager.getConnection(url);

但这似乎不起作用。我对@something.sql 部分感到困惑。我如何将它包含在我的连接网址中?我当前的连接 URL"jdbc:oracle:thin:user/password@//host/SERVICE"中是否还有任何明显的错误?


首先,sqlplus 是 Oracle 的一个命令行实用程序,他们给了你一个例子,在他们的例子中值应该被替换。

如果您有一个名为 "ababa" 的用户,他的密码为 "sesame"。假设服务是服务器 "bottle" 上的 "genie"。如果从命令行运行的 SQL 是 "SELECT * FROM Wishes LIMIT 3",它位于一个名为 "/tmp/wishes.sql" 的文件中。

从命令行,可以键入以下内容:

1
/usr/local/oracle/product/10.1.0/client_1/bin/sqlplus -S ababa/sesame@genie @/tmp/wishes.sql

从 Java 中可以调用:

1
2
3
Connection conn = DriverManager.getConnection("jdbc:oracle:thin://bottle/genie",
                                             "ababa",
                                             "sesame");

我通常不再直接在我的代码中使用连接字符串,但这看起来基本正确。真正的问题是 Oracle 不是标准的,这就是为什么你在那里有愚蠢的 @ 符号。

您可能还会发现您的某些 SQL 也不起作用。那是因为甲骨文有一些怪癖。在将代码投入生产之前,您确实应该针对 oracle 数据库测试您的代码。