Connexion avec oracle dans l'application java
J'ai téléchargé oracle express 11g edition et installé cela.Maintenant, je veux le connecter à partir de l'application java. Voici mon code de connexion: -
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:example", "example","password123");
Mais quand j'essaie de le connecter, il me montre l'exception suivante.
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:40)
Mais quand j'essaie de me connecter avec la base de données "xe", elle est connectée.
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "example","password123");
Je ne sais pas pourquoi cela se produit?. Veuillez me donner une référence ou un indice.
4 answers
Je pense que vous êtes un malentendu entre database schema
et le type de base de données. Dans Oracle
, XE
signifie Express Edition
de la base de données oracle. ORCL
signifie Oracle Corp
.
Dans mysql
DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "example","password123");
`test` is a database schema.
Dans Oracle XE
DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "example","password123");
DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@myhost:1521:orcl","example", "password123");
`example`: database schema name and DB user name are the same.
Les URL de connexion pour Oracle sont au format:
Jdbc:oracle:thin:@HOST:PORT:SID
Le SID est un identifiant de site. Dans une installation oracle complète, vous pouvez avoir plusieurs SID, mais pour Oracle Express, ce sera toujours XE
.
Ce à quoi vous faites référence en tant que "base de données" équivaut à un "utilisateur" dans Oracle ("exemple" dans votre code ci-dessus). Tables etc... sont créés sous cet utilisateur.
Vérifiez quelles instances sont connues de l'auditeur en exécutant: lsnrctl services
Vérifiez vos tnsnames.ora
Vérifiez vos paramètres SID pour la faute de frappe et la valeur des paramètres invalides
Dans le modèle d'URL XE et orcl sont les ID de service pour Oracle. Pour Oracle exprimé édition "xe" est utilisé pour Oracle Enterprised édition "orcl)" est utilisé..