Alguien me podria decir como se coloca el driver para una jdbc

Juanator
07 de Febrero del 2006
Estoy haciendo una aplicacion en java ke se conecte con oracle 9i y siempre me da el siguiente fallo:

Exception in thread "main" java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at driver_check.main(driver_check.java:47)

y no se ke es lo ke esta mal.
He incluido la maquina virtual de java en la ruta del path y no se que hacer mas. Adjunto la pequeña aplicacion de prueba ke uso



import java.io.* ;
import java.sql.* ;
import oracle.jdbc.driver.* ;

class driver_check {
public static void main (String args [])

throws SQLException, IOException
{

// Load the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

// Prompt the user for connect information
System.out.println ("Enter test connect info ");
String user;
String password;
String database;

user = readEntry ("user: ");
int slash_index = user.indexOf ('/');
if (slash_index != -1)
{
password = user.substring (slash_index + 1);
user = user.substring (0, slash_index);
}
else
password = readEntry ("password: ");
database = readEntry ("database (a TNSNAME entry): ");

System.out.print ("Connecting to the database...");
System.out.flush ();

System.out.println ("Connecting...");
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:" + user + "/" + password + "@" + database);

System.out.println ("connected.");

// Create a statement
Statement stmt = conn.createStatement ();

// Do the SQL "Hello World" thing
ResultSet rset = stmt.executeQuery ("select 'Hello World' from dual");

while (rset.next ())
System.out.println (rset.getString (1));
// close the result set, the statement and connect
rset.close();
stmt.close();
conn.close();
System.out.println ("Your JDBC installation is correct.");

}

// Utility function to read a line from standard input
static String readEntry (String prompt)
{
try
{
StringBuffer buffer = new StringBuffer ();
System.out.print (prompt);
System.out.flush ();
int c = System.in.read ();
while (c != 'n' && c != -1)
{
buffer.append ((char)c);
c = System.in.read ();
}
return buffer.toString ().trim ();
}
catch (IOException e)
{

return "";
}
}
}


Doy las gracias de antemano al ke kiera perder su tiempo ayudandome. Agradezco cualquier minima ayuda porke estoy amargao con esto ke no le encuentro el fallo

pelopico
07 de Febrero del 2006
A ver si asi te funciona porque a mi me ha dado dolor de cabeza. Lo fundamental es tener la misma version jdbc que acepte Oracle.
Utilizo winxp, jdk1.4 (el 1.5 no me funcionaba por las clases para oracle), Oracle 9.2.0.1.0(Oracle 9i)
Tienes que tener la clase classes12.zip en el directorio c:oracleora92jdbclibclasses12.zip (bueno este es mi directorio el tuyo sera otro), y hacer referencia en el classpath como :c:oracleora92jdbclibclasses12.zip. En winxp hay dos tipos de variables de entorno las del sistema y las de usuario, el classpath del que hablo lo he creado en el usuario, al cual hace referencia el jdk de sun, si lo hacia en el del sistema ni se enteraba.
El archivo .java: Habia dos cosas si ponia class.forName(oracle.jdbc.driver.Oracledriver().new Instance()) me daba error al no encontrar la clase oracle.jdbc no se porque, tengo puesto el mismo codigo que tu. Ahora va la cadena de conexion en el archivo java: DriverManager.getConnection ("jdbc:oracle:thin:" + user + "/" + password + "@" + "direccion ip o nombre del servidor"+ " : " + "1521" + " : " + nombre de la base de datos o servicio);
Y por fin funciona! Te aconsejo que revises el classpath, porque a mi me daban dos tipos de errores java.lang.NoclassDefFoundError oracle/jdbc.... por no encontrar la clase y el mismo que a ti al no p asarle la cadena correctamente. Gracias de antemano a todos los foreros porque me han dado entre todos las ideas.

geobasis
07 de Febrero del 2006
El problema segun yo son estas linaeas:
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
y
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:" + user + "/" + password + "@" + database);

Sustituyelas por: Class.forName(oracle.jdbc.driver.OracleDriver().newInstance()); y
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@direccion:puerto:servicio" + opciones);

en opciones va el user, password, database, permisos, etc.

La cadena que recibe DriverManager.getConnection debe cumplir un format que varia segun el driver que se utiliza, este en concreto no lo recuerdo pero averigua este formato y ya te debe funcionar.

Estoy casi seguro que hasta opciones esta bien:
direccion: ip o dns del servidor.
pueto en el que escucha el servidor.
servicio de oracle que atiende las peticiones a la base de datos que se queire conectar.

Me cuentas como te fue.