Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con Java y JDBC

Estas en el tema de Problema con Java y JDBC en el foro de Java en Foros del Web. Saludos a todos. AYUDA. Tengo el siguiente problema: He creado una clase con el codigo siguiente para accesar a una base de datos: try { ...
  #1 (permalink)  
Antiguo 12/09/2004, 22:37
 
Fecha de Ingreso: septiembre-2004
Mensajes: 2
Antigüedad: 19 años, 7 meses
Puntos: 0
Problema con Java y JDBC

Saludos a todos. AYUDA.
Tengo el siguiente problema:
He creado una clase con el codigo siguiente para accesar a una base de datos:
try
{
System.out.println("Comienza conexion");
Class.forName("com.mysql.jdbc.Driver").newInstance ();
System.out.println("Driver Cargado");
Conexion = DriverManager.getConnection "jdbc:mysql://localhost/salese","transk","ganajo");

System.out.println("Conexion realizada");
Sentencia2 = Conexion.createStatement(ResultSet.TYPE_SCROLL_SEN SITIVE,ResultSet.CONCUR_UPDATABLE);
Sentencia3 = Conexion.createStatement(ResultSet.TYPE_SCROLL_SEN SITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("Conexion OK");
} catch (Exception err) {System.out.println("ERROR: " + err);}

No hay problema en la compilación pero al ejecutar, en la instrucción que crea la conexión "DriverManager.getConnection" me da el siguiente error:
Sql.exception: unable to connect to any host due to exception: java.net.ConnectException: Connection refused: connect

No entiendo este error. Este mismo codigo lo tengo en varios servlets y funciona perfecto.

Ayuda por favor

José
  #2 (permalink)  
Antiguo 12/09/2004, 22:47
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
y estas seguro de que en la maquina donde lo corres tines instalado el servidor de MySQL??

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #3 (permalink)  
Antiguo 13/09/2004, 12:09
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Revisa el fichero de configuración del mySql y asegurate que tienes comentada esta línea.

skip-networking

Suerte.

Saludo
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #4 (permalink)  
Antiguo 13/09/2004, 13:33
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Kripton gracias por responder, no entendí tu último mensaje, sobre verificar si la línea está comentada. De todas maneras ese problema ya lo resolví pero tengo otro, en la linea:
Sentencia2 = Conexion.createStatement(ResultSet.TYPE_SCROLL_SEN SITIVE,ResultSet.CONCUR_UPDATABLE);

la cambie por:
Sentencia2 = Conexion.createStatement();

y me da el siguiente error:

"exception in thread "main" java.lang.NullPointerException at registroestadistica.registro(registroestadistica.j ava:67)

Ayuda por favor
  #5 (permalink)  
Antiguo 13/09/2004, 14:02
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Me refería a que editases el fichero el fichero de configuración del mysql. En mi caso /etc/mysql/mysql.cfg. Y búscases la línea skip-networking y la comentases --> #skip-networking

En varias ocasiones los servidores de mysql me devolvían ese error al intentar conectarme desde java y el problema estaba en que en la configuración estaba habilitada el ignorar peticiones de la red.

Respecto a tu nuevo error podrías ponernos exactamente cual es la línea 67 de tu registroestadistica.java para situarnos. Ya que según la api de sun el createStatement() en caso de fallar devuelve una SQLException y no una NullPointerException. La cuál sólo la puedo ubicar si al ejecutar el createStatement() conexion es igual a null

Nota: Te recomiendo que sigas es estandard y los nombres de todas tus variables empiecen con minuscula.

Saludos
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #6 (permalink)  
Antiguo 13/09/2004, 16:12
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Tiene mucha razon KRIPTON, y posteo para re afirmar loq ue te pide, de que sigas el estandar para programar en Java, y tu variables y metodos empiecewn con minuscula, si son palabras compuestas la segunda con mayuscula, y los nombres de clases siempre empiezan con mayuscula.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #7 (permalink)  
Antiguo 15/09/2004, 12:41
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
import java.io.*;
import java.sql.*;
import java.util.*;

public class registroestadistica {
Connection conexion;
Statement sentencia2;
Statement sentencia3;
ResultSet resultado2=null;
ResultSet resultado3=null;
private String login="";
private String password="";
private String pagina ="";

public registroestadistica(String lo, String pass, String pag) {
try {
System.out.println("Comienza conexion");
Class.forName("com.mysql.jdbc.Driver").newInstance ();
System.out.println("Driver Cargado");
} catch (Exception err) {System.out.println("ERROR: " + err);}

try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/salese","transk","ganajo");
} catch (Exception err) {System.out.println("ERROR: " + err);}

try {
System.out.println("Conexion realizada 0");
//LA SIGUIENTE LINEA ES LA DEL ERROR
sentencia2 = conexion.createStatement(ResultSet.TYPE_SCROLL_SEN SITIVE,ResultSet.CONCUR_UPDATABLE);
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}

System.out.println("Conexion OK");
login = lo;
password = pass;
pagina =pag;
}

public void registro(){
String consulta = "";
String grupo ="";
String codigo="";
Timestamp fereg = new Timestamp(System.currentTimeMillis());
consulta = "select grupo,codigo from registro where login='"+login+"' or password = '"+ password+"'";

try{
System.out.println("check");
sentencia2 = conexion.createStatement();
}catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}

try{
resultado2 = sentencia2.executeQuery(consulta);
if (resultado2.next()) {
grupo = resultado2.getString("grupo");
codigo = resultado2.getString("codigo");
resultado2.close();
sentencia2.close();
consulta = "insert into estadisticas (Fecha,Hora,Codigo,Pagina,Grupo) values('"+fereg+"','',"+codigo+",'"+pagina+"','"+g rupo+"')";
sentencia2 = conexion.createStatement();
sentencia3.executeUpdate(consulta);
resultado3.close();
sentencia3.close();
}
}
catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
}

}

Puse un comentario en donde está el error y cuando lo ejecuto muestra lo siguiente:
Hello world!
Comienza conexión
Driver Cargado
Conexión realizada 0
Exception in thread "main" java.lang.NullPointerException at registroestadistica.<init><registroestadistica.jav a:28> at prueba.main<prueba.java:6>
La clase registroestadistica.java la instancio desde la clase prueba

Por favor, gracias por la ayuda nuevamente
  #8 (permalink)  
Antiguo 15/09/2004, 13:46
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola josedes!!!

Ya he localizado el problema.

El problema esta en que por un lado tienes la variable
Código PHP:
Connection conexion
y por otro lado haces:
Código PHP:
try {
Connection con DriverManager.getConnection("jdbc:mysql://localhost/salese","transk","ganajo");
} catch (
Exception err) {System.out.println("ERROR: " err);} 
Como lo que has inicializado es la variable con y no la variable conexion, al intentar hacer
Código PHP:
sentencia2 conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
te tira una NullPointerException ya que conexion es igual a null.
Con cambiar la línea de inicialización de la conexión debería valer:
Código PHP:
try {
    
conexion DriverManager.getConnection("jdbc:mysql://localhost/salese","transk","ganajo");
} catch (
Exception err) {System.out.println("ERROR: " err);} 
Saludos
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #9 (permalink)  
Antiguo 15/09/2004, 16:53
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Kripton, muchisimas gracias, era ese el problema, depure un poco el código, y funcionó a la perfección. Realmente disculpame por haberte quitado tu tiempo tan valioso en un error tan simple como el nombre de la variable. Estoy muy apenado por ello. Esto no me sucede con frecuencia.

Gracias de Nuevo

Espero poder ayudarde algún día igual
  #10 (permalink)  
Antiguo 16/09/2004, 06:55
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola josedes!!!

Ha sido un placer ayudarte, me encantan las peliculas con finales felices

No te preocupes por el error, a veces nos volvemos locos y no nos planteamos revisar lo mas evidente. Pasa en las mejores familias

Saludos,
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #11 (permalink)  
Antiguo 19/09/2004, 19:22
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Hola yo de nuevo con el problema inicial

EL problema inicial vuelve a salir:

"DriverManager.getConnection" me da el siguiente error:
Sql.exception: unable to connect to any host due to exception: java.net.ConnectException: Connection refused: connect

Y lo muestra por la línea de código que trata de realizar la conexión a la base de datos:
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/salese","milogin","mipassword");
Esta línea esta correcta por que todas mis páginas jsp y servlets la tienen igual y se conecta sin problema.

Lo extraño es que el error me lo lanza en una máquina y en otra no, en la cual funciona perfectamente, y la configuración de todas las herramientas en ambas máquinas creo que las tengo igual (aunque ahora no estoy tan seguro)

Kripton, cuando me dices que comente la linea skip-networking en el archivo mysql.cfg pero esa línea no está en el archivo

Gracias, por toda la ayuda y tanto fastidiarlos
  #12 (permalink)  
Antiguo 20/09/2004, 01:40
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Prueba a poner el puerto en la URL de conexion:

Código PHP:
Connection conexion DriverManager.getConnection ("jdbc:mysql://localhost:3306/salese","milogin","mipassword"); 
Si así tampoco te funciona prueba a parar el mysql en la máquina que no funciona. Copiar el mysql.cfg de la máquina que si te funcionar y finalmente levantar el mysql.

Si tampoco te funciona prueba a hacer un telnet al localhost y puerto en el que esta fallando, para asegurarte que el mysql esta escuchando ahi.

Código:
telnet 127.0.0.1 3306
Saludetes
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #13 (permalink)  
Antiguo 11/07/2005, 14:34
 
Fecha de Ingreso: julio-2005
Mensajes: 1
Antigüedad: 18 años, 9 meses
Puntos: 0
error :java.net.ConnectException: Connection refused: connect

como entro al archivo de configuracion de mySql y comento esta línea??.
skip-networking

lo q pasa es q cuando ejecuto ciertas consultas me genera este error
:java.net.ConnectException: Connection refused: connect
no entiendo porq el me estaba funcionando muy bien y de pronto dejo de hacerlo

les agradezco su colaboracion...es urgente
Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:09.