1

所以我使用 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”中是否还有任何明显的错误?

4

2 回答 2

2

首先,sqlplus 是 Oracle 的一个命令行实用程序,他们为您提供了一个示例,其中值应该在他们的示例中被替换。

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

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

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

在 Java 中,人们会调用:

Connection conn = DriverManager.getConnection("jdbc:oracle:thin://bottle/genie",
                                              "ababa",
                                              "sesame");
于 2012-04-13T20:21:08.427 回答
0

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

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

于 2012-04-13T16:32:38.460 回答