Impossible de se connecter à la base de données oracle à l'aide de jdbc mince pilotes
Je suis en train d'essayer de se connecter à Oracle 10 XE de base de données Oracle à l'aide de fines pilotes mais je ne suis pas en mesure d'atteindre cet objectif. J'ai même ajouté les pilotes pour mon classpath lors de la compilation.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class Connectivity {
public static void main(String args[]) throws SQLException {
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Properties props = new Properties();
props.setProperty("user", "SYSTEM");
props.setProperty("password", "iiita");
try {
Class.forName ("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
}
Connection conn = DriverManager.getConnection(url,props);
String sql ="select sysdate as current_day from dual";
PreparedStatement preStatement = conn.prepareStatement(sql);
ResultSet result = preStatement.executeQuery();
while(result.next()){
System.out.println("Current Date from Oracle : " + result.getString("current_day"));
}
System.out.println("done");
}
}
Ce code donne l'erreur suivante lors de l'exécution de
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@localhost:1521/XE
at java.sql.DriverManager.getConnection(DriverManager.java:644)
at java.sql.DriverManager.getConnection(DriverManager.java:202)
at Connectivity.main(Connectivity.java:16)
OriginalL'auteur khirod | 2013-02-18
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié de spécifier l'ojdbc14 classpath lors de l'exécution de la classe principale:
Pour Windows:
java -cp .;<path>/ojdbc14.jar Connectivity
Sur Linux:
java -cp .:<path>/ojdbc14.jar Connectivity
P. S. Vous n'avez pas besoin ojdbc14.jar sur votre classpath pour compiler la classe principale. C'est un moteur d'exécution de dépendance.
Sont vos exécution de la commande dans le répertoire où Connectivity.class est placé?
oui bien sûr, je suis
Ce que je suis en train de faire localement. J'ai la structure de répertoire suivante: connectivité (Connectivity.class, Connectivity.java). connectivité est un répertoire. Connectivity.java est exactement le même que vous avez posté ci-dessus (le paquet est vide). Puis-je exécuter à partir de la connectivité répertoire: java -cp .;<path>/ojdbc14.jar Connectivité, où <path>/ojdbc14.jar est un chemin d'accès absolu à Oracle JDBC 1.4 jar du pilote. Tout fonctionne bien
Je pense que vous l'exécutez Windows. J'ai juste changé le ';' à ':' et il a travaillé avec succès sur Linux
OriginalL'auteur ZhekaKozlov
Ajouter cette ligne avant votre appel à
getConnection(url, props)
Il ne suffit pas d'avoir les pots sur votre classpath, sauf s'ils sont pilote jdbc > version 4.0. Vous avez fait inscrire le pilote avec la
DriverManager
.Changement
jdbc:oracle:thin:@localhost:1521:XE
àjdbc:oracle:thin:@//localhost:1521:XE
. Je crois que c'est la nouvelle syntaxe.Compiler comme
Exécuter en tant qu'
voir la question que j'ai édité
mon pilote jdbc est ojdbc14.jar
oracle.jdbc.le pilote.OracleDriver essayé ce trop toujours pas de succès
javac -classpath /home/khirod/Downloads/ojdbc14.jar Connectivity.java je pense que c'est la bonne façon de le faire, j'ai fait la même chose. Svp corrigez-moi si je me trompe, mais je suis nouveau sur Java sur linux
OriginalL'auteur Sotirios Delimanolis