Формат строки URL для подключения к базе данных Oracle с JDBC - PullRequest
33 голосов
/ 28 июня 2009

Я новичок в веб-разработке, связанной с Java, и я не могу найти простую программу с работающей 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);
        }
    }
}

Каков правильный формат URL базы данных? Они часто упоминаются, но я не смог найти описание.

РЕДАКТИРОВАТЬ (разрешение):

На основании ответа Даффимо я получил ojdbc14.jar с сайта загрузки Oracle и поместил его в Библиотеки ссылок проекта Eclipse. Затем я изменил начало кода на

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

и это сработало.

Ответы [ 6 ]

41 голосов
/ 13 декабря 2011

Есть два способа настроить это. Если у вас есть SID, используйте этот (более старый) формат:

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

Если у вас есть имя службы Oracle, используйте этот (более новый) формат:

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

Источник: эта страница OraFAQ

вызов getConnection() правильный .

Также, как сказал duffymo, убедитесь, что фактический код драйвера присутствует, включив ojdbc6.jar в classpath, где число соответствует используемой вами версии Java.

37 голосов
/ 28 июня 2009

Смотри здесь .

Ваш URL неверный. Должно выглядеть так:

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

Вы также не регистрируете класс драйвера. Вы хотите загрузить JAR-драйвер для тонких драйверов, поместить его в свой CLASSPATH и сделать свой код более похожим на this .

ОБНОВЛЕНИЕ: "14" в "ojdbc14.jar" означает JDK 1.4. Вы должны сопоставить версию своего драйвера с JDK, который вы используете. Бьюсь об заклад, это означает, что JDK 5 или 6.

17 голосов
/ 02 марта 2013

Правильный формат для 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).

4 голосов
/ 13 июля 2013

если вы используете oracle 10g expree Edition, то:
1. для использования класса загрузки DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); 2. для подключения к базе данных Connection conn = DriverManager.getConnection("jdbc:oracle:thin:username/password@localhost:1521:xe");

0 голосов
/ 28 июня 2009

Я не Java-разработчик, поэтому, к сожалению, я не могу прокомментировать ваш код напрямую, однако я нашел это в FAQ по Oracle относительно формы строки соединения

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

Из Oracle JDBC FAQ

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

Надеюсь, это поможет

0 голосов
/ 28 июня 2009
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());         
connection = DriverManager.getConnection("jdbc:oracle:thin:@machinename:portnum:schemaname","userid","password");
...