【问题标题】:Oracle connection with JDBCOracle 与 JDBC 的连接
【发布时间】:2012-04-26 00:42:30
【问题描述】:

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

【问题讨论】:

标签: java oracle jdbc


【解决方案1】:

首先,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");

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 没有“标准”JDBC URL 这样的东西。它特定于供应商的(根据定义)。顺便说一句:MySQL 比 Oracle 有更多的怪癖(允许存储 2 月 31 日只是其中之一)
    • 哦,我肯定会在生产前对其进行测试。除了直接在代码中使用连接字符串之外,您还有什么选择?
    • Springs JDBC 的东西。 Apache dbUtils。还有其他一些可以为您抽象出 JDBC 的混乱。
    猜你喜欢
    • 2015-09-15
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多