使用JDBC连接Oracle数据库的URL字符串格式

时间:2009-06-28 02:46:10

标签: oracle jdbc oracle-xe

我是Java相关Web开发的新手,我似乎无法使用JDBC工作获得一个简单的程序。我正在使用现成的Oracle 10g XE和Eclipse EE IDE。从我到目前为止检查过的书籍和网页,我已经将问题缩小到错误编写的数据库URL或丢失的JAR文件。我收到以下错误:

  

java.sql.SQLException:找不到合适的jdbc驱动程序:oracle://127.0.0.1:8080

使用以下代码:

import java.sql.*;

public class DatabaseTestOne {
    public static void main(String[] args) {
        String url = "jdbc:oracle://127.0.0.1:8080";
        String username = "HR";
        String password = "samplepass";

        String sql = "SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE LAST_NAME='King'";
        Connection connection;
        try {
            connection = DriverManager.getConnection(url, username, password);
            Statement statement = connection.createStatement();
            System.out.println(statement.execute(sql));
            connection.close();
        } catch (SQLException e) {
            System.err.println(e);
        }
    }
}

数据库网址的正确格式是什么?他们被提到很多,但我找不到描述。

编辑(决议):

根据duffymo的回答,我从Oracle's download site获得ojdbc14.jar并将其放入Eclipse项目的Referenced Libraries中。然后我将代码的开头改为

...
// jdbc:oracle:thin:@<hostname>:<port>:<sid>
String url = "jdbc:oracle:thin:@GalacticAC:1521:xe";
...

并且有效。

7 个答案:

答案 0 :(得分:40)

有两种方法可以设置它。如果您有SID,请使用此(较旧)格式:

jdbc:oracle:thin:@[HOST][:PORT]:SID

如果您有Oracle服务名称,请使用此(更新)格式:

jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

来源:this OraFAQ page

call to getConnection() is correct

此外,正如duffymo所说,通过在类路径中包含ojdbc6.jar来确保实际的驱动程序代码存在,其中数字对应于您正在使用的Java版本。

答案 1 :(得分:37)

here

您的网址不正确。应该是这样的:

url="jdbc:oracle:thin:@localhost:1521:orcl"

您也没有注册驱动程序类。您想要下载瘦驱动程序JAR,将其放入CLASSPATH,并使您的代码看起来更像this

更新:“ojdbc14.jar”中的“14”代表JDK 1.4。您应该将驱动程序版本与正在运行的JDK相匹配。我打赌这意味着JDK 5或6。

答案 2 :(得分:17)

url的正确格式可以是以下格式之一:

jdbc:oracle:thin:@<hostName>:<portNumber>:<sid>;  (if you have sid)
jdbc:oracle:thin:@//<hostName>:<portNumber>/serviceName; (if you have oracle service name)

不要在那里放任何空间。 尝试使用1521作为端口号。 sid(数据库名称)必须与环境变量中的相同(如果使用的是Windows)。

答案 3 :(得分:4)

如果你使用的是oracle 10g快递版,那么:
1.用于加载课堂使用DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); 2.使用Connection conn = DriverManager.getConnection("jdbc:oracle:thin:username/password@localhost:1521:xe");

连接数据库

答案 4 :(得分:0)

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());         
connection = DriverManager.getConnection("jdbc:oracle:thin:@machinename:portnum:schemaname","userid","password");

答案 5 :(得分:0)

我不是Java开发人员,所以不幸的是我不能直接评论你的代码,但我在Oracle FAQ中找到了关于连接字符串的形式

jdbc:oracle:<drivertype>:<username/password>@<database>

来自Oracle JDBC FAQ

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#05_03

希望有所帮助

答案 6 :(得分:0)

String host = <host name>
String port = <port>
String service = <service name>
String dbName = <db schema>+"."+service
String url = "jdbc:oracle:thin:@"+host+":"+"port"+"/"+dbName