web-dev-qa-db-fra.com

Format de chaîne URL pour la connexion à la base de données Oracle avec JDBC

Je suis un débutant dans le développement Web lié à Java et je n'arrive pas à obtenir un programme simple avec JDBC. J'utilise Oracle 10g XE standard et l'IDE Eclipse EE. À partir des livres et des pages Web que j'ai vérifiés jusqu'à présent, j'ai réduit le problème à une URL de base de données incorrectement écrite ou à un fichier JAR manquant. J'obtiens l'erreur suivante:

Java.sql.SQLException: aucun pilote approprié trouvé pour jdbc: Oracle: //127.0.0.1: 8080

avec le code suivant:

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);
        }
    }
}

Quel est le format approprié pour une URL de base de données, de toute façon? Ils sont souvent mentionnés mais je n'ai pas pu trouver de description.

EDIT (la résolution):

Sur la base de la réponse de duffymo, j'ai obtenu ojdbc14.jar de site de téléchargement d'Oracle et l'a déposé dans les bibliothèques référencées du projet Eclipse. J'ai ensuite changé le début du code en

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

et ça a marché.

33
Pops

Regardez ici .

Votre URL est tout à fait incorrecte. Devrait ressembler à ceci:

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

Vous n'enregistrez pas non plus de classe de pilote. Vous voulez télécharger le JAR du pilote léger, le mettre dans votre CLASSPATH et rendre votre code plus semblable à this .

MISE À JOUR: Le "14" dans "ojdbc14.jar" signifie JDK 1.4. Vous devez faire correspondre la version de votre pilote avec le JDK que vous utilisez. Je parie que cela signifie JDK 5 ou 6.

37
duffymo

Il existe deux façons de configurer cela. Si vous avez un SID, utilisez ce format (plus ancien):

jdbc:Oracle:thin:@[Host][:PORT]:SID

Si vous avez un nom de service Oracle, utilisez ce format (plus récent):

jdbc:Oracle:thin:@//[Host][:PORT]/SERVICE

Source: cette page OraFAQ

l'appel à getConnection() est correct .

En outre, comme l'a dit duffymo, assurez-vous que le code de pilote réel est présent en incluant ojdbc6.jar Dans le chemin de classe, où le numéro correspond à la version Java Java que vous utilisez).

41
Pops

Le format correct pour l'URL peut être l'un des formats suivants:

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

Et n'y mettez pas d'espace. Essayez d'utiliser 1521 comme numéro de port. sid (nom de la base de données) doit être le même que celui qui se trouve dans les variables d'environnement (si vous utilisez Windows).

17
Clara

si vous utilisez Oracle 10g expree Edition, alors:
1. pour charger la classe, utilisez DriverManager.registerDriver (new Oracle.jdbc.OracleDriver()); 2. pour vous connecter à la base de données, utilisez Connection conn = DriverManager.getConnection("jdbc:Oracle:thin:username/password@localhost:1521:xe");

4
Ketan Vishwakarma
String Host = <Host name>
String port = <port>
String service = <service name>
String dbName = <db schema>+"."+service
String url = "jdbc:Oracle:thin:@"+Host+":"+"port"+"/"+dbName
0
Pushkar Nayama
DriverManager.registerDriver(new Oracle.jdbc.driver.OracleDriver());         
connection = DriverManager.getConnection("jdbc:Oracle:thin:@machinename:portnum:schemaname","userid","password");
0
Steve Prior

Je ne suis pas un développeur Java donc malheureusement je ne peux pas commenter votre code directement mais j'ai trouvé cela dans un Oracle FAQ concernant la forme d'une connexion) chaîne

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

Depuis Oracle JDBC FAQ

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

J'espère que ça t'as aidé

0
Crippledsmurf