library - Formato de cadena URL para conectarse a la base de datos Oracle con JDBC
oracle jdbc jar (6)
Soy un novato en el desarrollo web relacionado con Java, y parece que no puedo obtener un programa simple con JDBC funcionando. Estoy usando Oracle 10g XE comercial y el Eclipse EE IDE. De los libros y páginas web que he revisado hasta ahora, reduje el problema a una URL de base de datos escrita incorrectamente o un archivo JAR faltante. Me aparece el siguiente error:
java.sql.SQLException: No se encontró un controlador adecuado para jdbc: oracle: //127.0.0.1: 8080
con el siguiente código:
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);
}
}
}
¿Cuál es el formato adecuado para una URL de base de datos, de todos modos? Se mencionan mucho, pero no he podido encontrar una descripción.
EDITAR (la resolución):
Basado en la respuesta de Duffymo, obtuve ojdbc14.jar
del sitio de descarga de Oracle y lo dejé caer en las Bibliotecas de Referencia del proyecto Eclipse. Luego cambié el inicio del código a
...
// jdbc:oracle:thin:@<hostname>:<port>:<sid>
String url = "jdbc:oracle:thin:@GalacticAC:1521:xe";
...
Y funcionó.
El formato correcto para url puede ser uno de los siguientes formatos:
jdbc:oracle:thin:@<hostName>:<portNumber>:<sid>; (if you have sid)
jdbc:oracle:thin:@//<hostName>:<portNumber>/serviceName; (if you have oracle service name)
Y no pongas ningún espacio allí. Intenta usar 1521 como número de puerto. sid (nombre de la base de datos) debe ser el mismo que está en las variables de entorno (si está usando Windows).
Hay dos formas de configurar esto. Si tiene un SID, use este formato (antiguo):
jdbc:oracle:thin:@[HOST][:PORT]:SID
Si tiene un nombre de servicio de Oracle, use este formato (más reciente):
jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
Fuente: esta página de OraFAQ
La llamada a getConnection()
es correcta .
Además, como dijo duffymo, asegúrese de que el código de controlador real esté presente incluyendo ojdbc6.jar
en el classpath, donde el número corresponde a la versión de Java que está utilizando.
Mira here .
Tu URL es bastante incorrecta. Debería verse así:
url="jdbc:oracle:thin:@localhost:1521:orcl"
Tampoco registras una clase de controlador. Desea descargar el controlador JAR delgado, colocarlo en su CLASSPATH y hacer que su código se vea más como this .
ACTUALIZACIÓN: el "14" en "ojdbc14.jar" significa JDK 1.4. Debe coincidir con la versión de su controlador con el JDK que está ejecutando. Apuesto a que eso significa JDK 5 o 6.
No soy un desarrollador de Java, desafortunadamente no puedo comentar su código directamente, sin embargo, encontré esto en las preguntas frecuentes de Oracle sobre la forma de una cadena de conexión.
jdbc:oracle:<drivertype>:<username/password>@<database>
De las preguntas frecuentes de Oracle JDBC
http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.html#05_03
Espero que ayude
si está utilizando la edición expree de Oracle 10g, entonces:
1. para cargar la clase utilice DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
2. para conectarse al uso de la base de datos Connection conn = DriverManager.getConnection("jdbc:oracle:thin:username/password@localhost:1521:xe");
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
connection = DriverManager.getConnection("jdbc:oracle:thin:@machinename:portnum:schemaname","userid","password");