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

error al crear la conexion a mysql

Estas en el tema de error al crear la conexion a mysql en el foro de Java en Foros del Web. Hola, me esta pasando algo curioso y no se si es un error tonto o es que se me ha rayado el netbeans... En una ...
  #1 (permalink)  
Antiguo 12/07/2010, 11:56
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 0
error al crear la conexion a mysql

Hola, me esta pasando algo curioso y no se si es un error tonto o es que se me ha rayado el netbeans...

En una aplicacion que tengo, solo tengo creada la clase Main, una clase JFrame y otra JDialog....el main simplemente ejecuta el JFrame y en este hay un boton que llama al JDialog. Sencillo, a modo de prueba.

Pues bien, en el main me hago una conexion a mi base de datos mysql
Cita:
Class.forName("com.mysql.jdbc.Driver");
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/mibasededatos", "root", "contra");
PreparedStatement statetment = conexion.prepareStatement("select nombre from personas");
ResultSet result = statetment.executeQuery();
while(result.next()){
System.out.println(result.getString(1));

}
Y me hace la conexion bien...y me muestra mediante el System... los datos.

Pero si hago lo mismo en la clase del JDialog, me da error en la linea

Connection conexion = DriveManager....etc... y me dice:
required: com.mysql.jdbc.Connection found: java.sql.Connection

No puedo entenderlo. Tengo agragado en bibliotecas, dentro del JDK 1.6 el conector mysql-connector-java-5.0.8-bin y bueno, la prueba es que en el main si que me funciona la conexion a la base de datos!! como es posible que esa clase no?

Aparte tengo otra aplicacion que estoy haciendo para otro trabajo, y en esa tambien me funciona todo perfecto en todas las clases..ya sean main, JDialogs, JFrame....

No entiendo que me falla.
  #2 (permalink)  
Antiguo 12/07/2010, 16:40
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: error al crear la conexion a mysql

Segun el error

required: com.mysql.jdbc.Connection found: java.sql.Connection

Debes revisar que hayas escrito bien el import de la clase Connection. Al parecer siempre que te ha funcionado has escrito

Código:
import com.mysql.jdbc.Connection;
clase que si no estoy mal es parte del conector de mysql que mencionaste. Pero en vez de ese import tienes

Código:
import java.sql.Connection;
  #3 (permalink)  
Antiguo 13/07/2010, 01:24
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: error al crear la conexion a mysql

Cita:
Iniciado por briant14 Ver Mensaje
Segun el error

required: com.mysql.jdbc.Connection found: java.sql.Connection

Debes revisar que hayas escrito bien el import de la clase Connection. Al parecer siempre que te ha funcionado has escrito

Código:
import com.mysql.jdbc.Connection;
clase que si no estoy mal es parte del conector de mysql que mencionaste. Pero en vez de ese import tienes

Código:
import java.sql.Connection;
Ahí esta lo gracioso. Los imports que tengo son:
Cita:
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import java.sql.DriverManager;
import java.util.ArrayList;
Y me da ese error. En cambio en el Main.java tengo solamente:
import java.sql.*;

Y hago dentro del main una conexion y me funciona!!!

Ademas, tengo otra aplicacion que estoy haciendo como he dicho, y tambien me funciona y no tengo el import que dices...solo estos:
Cita:
import com.sun.org.apache.bcel.internal.generic.Select;
import java.awt.Color;
import javax.swing.JOptionPane;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.JTable;
import oracle.toplink.essentials.internal.parsing.FromNod e;
import org.jdesktop.application.FrameView;
import sun.awt.SunHints.Value;
Y me funciona perfectamente...me estoy volviendo loco...


EDITO: VALE, YA SE PORQUE ME FALLA ...pero no lo entiendo.

en la otra aplicacion me funcionaba porque usaba el Connection del java.sql....no el del com.mysql.jdbc.... y si quito ese import y dejo solamente el java.sql.*; me funciona perfectamente....

Esta bien realizar la conexion asi? que diferencia hay? yo pensaba que estaba usando el conector que me baje y añadi a las librerias del netbeans...y ahora resulta que me funcionaba todo sin usar ese conector.... no lo entiendo :(

Última edición por porito; 13/07/2010 a las 01:30
  #4 (permalink)  
Antiguo 13/07/2010, 06:03
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: error al crear la conexion a mysql

Hola:

Te sobra el

import com.mysql.jdbc.Connection;

que se está liando con el java.sql.Connection.

DriverManager devuelve un java.sql.Connection y por el error parece que estás intentando asignarlo a una variable de tipo com.mysql.jdbc.Connection.

Cuando trabajas con base de datos, lo normal es olvidar totalmente los import correspondientes a tu base de datos concreta y usar sólo los de java.sql. De hecho, al poner la carga del driver así

Class.forName("com.mysql.jdbc.Driver");

ni siquiera hace falta ese import. De esta forma tu código es más general y será capaz de trabajar con cualquier base de datos (sólo hay que añadir la librería del connector adecuado, el Class.forname() del Driver y la url de conexión, sin necesidad de tener que ir tocando por todo el código todos los import.

Idem com los import com.mysql.jdbc.PreparedStatement; y import com.mysql.jdbc.ResultSet;, procura usar siempre los de java.sql

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 13/07/2010, 06:36
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: error al crear la conexion a mysql

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Te sobra el

import com.mysql.jdbc.Connection;

que se está liando con el java.sql.Connection.

DriverManager devuelve un java.sql.Connection y por el error parece que estás intentando asignarlo a una variable de tipo com.mysql.jdbc.Connection.

Cuando trabajas con base de datos, lo normal es olvidar totalmente los import correspondientes a tu base de datos concreta y usar sólo los de java.sql. De hecho, al poner la carga del driver así

Class.forName("com.mysql.jdbc.Driver");

ni siquiera hace falta ese import. De esta forma tu código es más general y será capaz de trabajar con cualquier base de datos (sólo hay que añadir la librería del connector adecuado, el Class.forname() del Driver y la url de conexión, sin necesidad de tener que ir tocando por todo el código todos los import.

Idem com los import com.mysql.jdbc.PreparedStatement; y import com.mysql.jdbc.ResultSet;, procura usar siempre los de java.sql

Se bueno.
Totalmente cierto. Muchas gracias por la aclaracion. Solucionado
Respecto a lo que has dicho...tambien me sirve para conectarme a SQL server aparte de Mysql? Solo tendria que cambiar el Class.forname() y la url y ya esta?
  #6 (permalink)  
Antiguo 10/01/2012, 07:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: error al crear la conexion a mysql

Hola, he visto que ustedes han tocado un problema que he tenido por varios meses. A mi me ha pasado algo similar, tengo mi base de datos, y un proyecto creado en "Java Desktop Application" (Swing) y anteriormente realizaba mis conexiones a la base de datos sin ningún problema (conectandome de forma local). El problema llegó cuando quise administrar mi base de datos en un grupo de trabajo (de forma LAN), ya que no se conectaba y me mostraba el siguiente error:
/--------------------
GRAVE: null
com.mysql.jdbc.exceptions.jdbc4.CommunicationsExce ption: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
/------------------------

Dando vueltas en el proyecto, revisando la razón del problema, me di cuenta que esto solo ocurría cuando llamaba a los JDialog antes de realizar la conexión a la base de datos.

Into = new IntroProy(null, true); // Llama al JDialog que contiene el Intro del Proy
//Linea que conecta a la base de datos
conn = (Connection) DriverManager.getConnection(url, Login, password);

Cuando invierto éstas dos líneas el proyecto inmediatamente conecta a la base de datos, inicia y además corre sin ningún problema. (Lo he dejado así por mucho tiempo, el inconveniente está en que en otros tipos de proyecto la base de datos no inicia sino hasta después de pedir cierta información y he tenido que iniciarla siempre al comienzo general de todo....)

Quisiera saber si uds tienen algún conocimiento de por que esto ocurre con Java, y como se puede solucionar?

De antemano Muchas gracias.
  #7 (permalink)  
Antiguo 10/01/2012, 07:25
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: error al crear la conexion a mysql

Hola:

Java no tiene ningún problema con los JDialog y las bases de datos, posiblemente tengas algún error en algún sitio. Habría que ver qué hace IntroProy(null, true). Quizás intenta acceder a base de datos en algún momento antes de que hayas hecho la conexión (está en la línea que hay detrás, por lo que todavía no se ha establecido dicha conexión).

Por cierto, has resucitado un tema del 2010.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #8 (permalink)  
Antiguo 10/01/2012, 07:39
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: error al crear la conexion a mysql

Hola y antes que nada gracias por la rápida respuesta :)

Bueno quiero contarte que el problema siempre ha sido en los JDialog, la llamada yo la hago desde el Main o el archivo App de los proyectos creados en Swing. te dejo el código completo del archivo ProyectoApp.java:

package proyecto;

import Comun.Controlador;
import Comun.IntroAPMERO;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;
import java.sql.*;


/**
* The main class of the application.
*/
public class ProyectoApp extends SingleFrameApplication {

/**
* At startup create and show the main frame of the application.
*/
@Override
protected void startup() {
this.ControladorClase.setConnection((com.mysql.jdb c.Connection) conn);
show(new ProyectoView(this, ControladorClase));
}

/**
* This method is to initialize the specified window by injecting resources.
* Windows shown in our application come fully initialized from the GUI
* builder, so this additional configuration is not needed.
*/
@Override
protected void configureWindow(java.awt.Window root) {
}

/**
* A convenient static getter for the application instance.
* @return the instance of ProyectoApp
*/
public static ProyectoApp getApplication() {
return Application.getInstance(ProyectoApp.class);
}
/**
* Main method launching the application.
*/
private static Connection conn;
public Controlador ControladorClase = new Controlador();
private static IntroProy intro=null;

public static void main(String[] args) {
String bd = "BDAPMERO";
String Login = "user";
String password = "pass";
String url = "jdbc:mysql://IP:3306/" + bd;
//IP SERVIDOR


intro = new IntroProy(null, true);
conn = conectar(bd, Login, password, url);

intro.setVisible(true);
launch(ProyectoApp.class, args);
}

private static Connection conectar(String bd, String Login, String password, String url) {
try {
Class.forName("com.mysql.jdbc.Connection");
try {
conn = (Connection) DriverManager.getConnection(url, Login, password);
} catch (SQLException ex) {
Logger.getLogger(ProyectoApp.class.getName()).log( Level.SEVERE, null, ex);
}
if (conn != null) {
System.out.println("Conexión con la base de datos establecida");
}
} catch (ClassNotFoundException ex) {
System.out.println(ex);
}
return conn;
}
}

Nuevamente muchas gracias por la colaboración. Pdta: retiño el lugar donde ocurre el error.

Última edición por scorpius87; 18/09/2012 a las 13:13

Etiquetas: conexion, mysql
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:27.