Feeds de los foros

En la página principal de los foros encontrarás los enlaces al logo feed feed general y al de cada uno de los foros.

Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible

Buscar en el foro

Foro J2SE

feed Foro J2SE Foro: J2SE

Nuevo Tema Nuevo Tema

Problemas Conexion con JDBC 24/11/2008 22:10
anonymous

Saludos amigos,

bueno resulta que para trabajo del colegio tengo que hacer una pagina web sencilla con applet's java los cuales modifiquen una base de datos. Ya elegi que la base de datos seria en MySQL, usaria Jcreator como entorno de programacion.... en fin.

Resulta que el codigo ya lo he hecho, con ayuda de un par de manuales que encontre en la web, a simple vista no parese haber errores ya que al compilar el archivo no presenta errores, pero al ejecutarlo presenta un conjunto de errores que no logro desifrar a que hacen referencia.

Datos de la base de datos:

Nombre: ejemplo

Tablas: datos

Campos: cod(int), nombre(varchar)

 Codigo Java

 import java.sql.*;
public class jejemplo {
    public jejemplo(){
        ;     }
        ; public boolean registrarJDBC(String driver){
        ;     try{
        ;         Class.forName(driver);
        ;         return true;
        ;     }catch(ClassNotFoundException ex) {
        ;         ex.printStackTrace();
        ;         return false;
        ;     }
        ; }
        ; public Connection realizarConexion(String url, String user, String pass){
        ;     try{
        ;         Connection con=DriverManager.getConnection(url,user,pass);
        ;         return con;
        ;     }catch (SQLException ex){
        ;         ex.printStackTrace();
        ;         return null;
        ;     } 
        ; }
        ; public void cerrarConexion(Connection con){
        ;     try{
        ;         con.close();
        ;         System.out.println("Conexion cerrada");
        ;     }catch (SQLException ex){
        ;         ex.printStackTrace();
        ;     }
        ; }
        ; public void ejemploJDBC(){
        ;     if (registrarJDBC("com.mysql.jdbc.Driver")){
        ;         System.out.println("Conectado!");
        ;         Connection con=realizarConexion ("jdbc:mysql://localhost/ejemplo&qu ot;,"root","root");
        ;         if (con!=null){
        ;           ;   System.out.println("Conexion abierta !" ;);
        ;           ;   try {
        ;           ;       Statement stmt = con.createStatement();
        ;           ;       ResultSet rs=stmt.executeQuery("select cod, nombre  ;from datos;");
        ;           ;       while (rs.next()){
        ;           ;           ; System.out.println(rs.getInt(1) + "," + rs.getString(2));        ;           ;           ;
        ;           ;       }
        ;           ;       rs.close();
        ;           ;       stmt.close();
        ;           ;   }catch (SQLException ex){
        ;           ;       ex.printStackTrace();
        ;           ;   }
        ;           ;   cerrarConexion(con);
        ;         }else{
        ;           ;       System.out.println("Conexion abortada :=(&q uot;);
        ;           ;   }
        ;         }else{
        ;           ;   System.out.println("Sorry...");
        ;         }
        ;     }
        ; 
public static void main(String []args){
        ;     jejemplo jejemplo1=new jejemplo();
        ;     jejemplo1.ejemploJDBC();
        ;     
    }
        ; }

 Eso es lo que tengo, los codigos de error son los siguientes:

java.lang.ClassCastException: jejemplo cannot be cast to java.applet.Applet
    at sun.applet.AppletPanel.createApplet(AppletPanel.java:786)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java:715)
    at sun.applet.AppletPanel.run(AppletPanel.java:369)
    at java.lang.Thread.run(Thread.java:619)

Si alguien me ayuda en este problemilla os lo agradesere eternamente, ya casi es dia de entregar el trabajo y me duele la cabeza de todo el tiempo que le he metido.

 De antemano mil gracias.

#unapprove_message#
RE: Problemas Conexion con JDBC 24/11/2008 22:32
kool_084 Que tal la conexion parece correcta el error que tienes va por otrolado basicamente dice que no se puede aplicar un cast a tu clase para convertirla en applet, el problema debe estar en el run del Applet que usas, seguramente l aforma en la que llamas a esta clase desde el applet no es correcta, si puedes poner el codigo del Applet te podria ayudar mejor
#unapprove_message#
RE: RE: Problemas Conexion con JDBC 24/11/2008 22:50
anonymous

Amigo, gracias por responder.

el codigo que esta en el mensaje es todo el que he hecho. Nohe hecho mas codigo, he probado de dos formas diferentes pero siempre me da el mismo error.

Querer depurarlo me sale una ventana nueva con un codigo que nunca he hecho ni habia visto.

Gracias de antemano por la ayuda.
#unapprove_message#
RE: Problemas Conexion con JDBC 24/11/2008 23:08
anonymous

Oye como estas tratando de ejecutar tu codigo??

Con el Appletviewe???

si la respuesta es 'si' yo creo que por aqui va el problema, porque tu clase efectivamente no es un applet.

 

 Saludos, Six!!!!

#unapprove_message#
RE: Problemas Conexion con JDBC 24/11/2008 23:49
anonymous

AMigos, lo ejecuto sobre el mismo programa que escribo el codigo (jcreator), tambien desde una pagina html, pero tampoco.

Gracias por ayudar.

#unapprove_message#
RE: Problemas Conexion con JDBC 25/11/2008 00:19
anonymous

No pues yo nunce he usado jCreator, pero creo que tu problema se esta generando porque estas tratando de ejecutar una clase java como si fuera un Applet, lo digo por el metodo main que tiene tu clase, las clases applet no tienen metodo main, tampoco te estas extendiendo de la Clase java.applet.Applet o javax.swing.JApplet.

No se que tan intuitivo es jcreator, pero te recomendaria usar algun IDE como NetBeans o Eclipse, que son muy faciles y rapidos de entender y de paso darle una repasada más a los applets.

Saludos Six!!!!!!

#unapprove_message#
RE: Problemas Conexion con JDBC 25/11/2008 03:01
anonymous

ok, puede que se por lo que me dices amigo Six, creo que se pueda deber a eso. Ahora, me podrias colaborar en como debo organizar mi codigo?

Mira encontre que la sintaxis para un applet es asi:


import javax.swing.JApplet;
import javax.swing.JLabel;

/**
* Ejemplo sencillo de applet
* @author Chuidiang
*
*/
public class EjemploApplet extends JApplet {
/**
* Pone un JLabel con el texto "Applet hola mundo" en el JApplet, de
* forma que es lo que se visualizará en el navegador.
*/
public void init() {
JLabel etiqueta = new JLabel("Applet hola mundo");
add(etiqueta);
}
}
 Este ejemplo me corre a la perfeccion, quisiera saber como organizar el primer codigo en este ultimo para poder que funcione. Te agradesco eternamente tu ayuda y la de toda la comunidad.
#unapprove_message#
RE: Problemas Conexion con JDBC 25/11/2008 15:40
kool_084

Ok mira todo lo que has echo parece bastante correcto,bueno yo te pongo un ejemplo de algo que ya tengo echo solo cree el applet y le mande a consultar de una tabla como la tuya, es bastante parecido, asi que puedes mantener tu clase y desde el applet la utilizas mas o menos como yo lo hice, o puedes modificar mi ejemplo y usarlo para tu caso, otra cosa conveniente seria que cambies de IDE, no tengo nada en contra de JCreator, de echo es util para cosas simples, pero no es muy intuitivo, yo trabajo en eclipse y netbeans en los dos probe esto y funciona

#unapprove_message#
RE: RE: Problemas Conexion con JDBC 25/11/2008 15:45
kool_084

 

CLASE DE CONECCION

 import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Jaime Ruales
 *
 */
public class Conexion {

    
    public static final String DRIVER_MYSQL = "com.mysql.jdbc.Driver";
    
    public static final String DRIVER_JAVA_DB = "org.apache.derby.jdbc.ClientDriver";
    
    public static final String DRIVER_JDBC_ODBC = "sun.jdbc.odbc.JdbcOdbcDriver";
    
    public static final String DRIVER_SQL_SERVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    
    public static final int PUERTO_MYSQL = 3306;
    
    public static final int PUERTO_SQL_SERVER = 1433;

    public static final int PUERTO_JAVA_DB = 1527;

    private String driver = null;
    private String host;
    private int port;
    private String database;
    private String user;
    private String passw;
    private Connection connection;

    /**
     * Crea una coneccion a una DB determinada a traves de los parametros especificados
     
     */
    public Conexion(final String controlador, final String host, final int puerto,
         &nbs p;  final String baseDatos, final String usuario,
         &nbs p;  final String clave) throws SQLException {
        if (controlador == null) {
         &nbs p;  throw new SQLException("La cadena para identificacion del driver es nula");
        }

        if (usuario == null) {
         &nbs p;  throw new SQLException("Usuario de bdd nulo");
        }

        if (clave == null) {
         &nbs p;  this.passw = new String();
        }

        this.host = host;
        this.port = puerto;
        this.driver = controlador;
        this.database = baseDatos;
        this.user = usuario;
        this.passw = clave;


        if ((!controlador.equals(DRIVER_MYSQL)) &
         &nbs p;      (!controlador.equals(DRIVER_JDBC_ODBC)) &
         &nbs p;      (!controlador.equals(DRIVER_SQL_SERVER)) &
         &nbs p;      (!controlador.equals(DRIVER_JAVA_DB))) {
         &nbs p;  throw new SQLException("Driver no identificado");
        }

        inicializar();

    }

    /**
     *
     * @param c Connection
     */
    public Conexion(Connection c) {
        connection = c;
    }

/////Continua...

 

#unapprove_message#
RE: RE: RE: Problemas Conexion con JDBC 25/11/2008 15:46
kool_084     private void inicializar() throws SQLException {
        try {
         &nbs p;  Class.forName(driver).newInstance();
        } catch (Exception ex) {
         &nbs p;  ex.printStackTrace();
        }

        String url = null;

        if (driver.equalsIgnoreCase(DRIVER_MYSQL)) {
         &nbs p;  host = host == null ? "localhost" : host;
         &nbs p;  url = "jdbc:mysql://" + host + ":" + port + "/" + database +
         &nbs p;          "?user=" +
         &nbs p;          user;
         &nbs p;  connection = DriverManager.getConnection(url);
        } else if (driver.equalsIgnoreCase(DRIVER_JDBC_ODBC)) {
         &nbs p;  url = "jdbc:odbc:" + database;
         &nbs p;  connection = DriverManager.getConnection(url, user,
         &nbs p;          passw);

        }else if(driver.equalsIgnoreCase(DRIVER_JAVA_DB)){
         &nbs p;  url = "jdbc:derby://" + host + ":" + port + "/" + database;
         &nbs p;  connection = DriverManager.getConnection(url, user, passw);
        }else {
         &nbs p;  host = host == null ? "localhost" : host;
         &nbs p;  url = "jdbc:microsoft:sqlserver://" + host + ":" + port +
         &nbs p;          ";DatabaseName=" + database +
         &nbs p;          ";User=" + user + ";Password=" + passw;
         &nbs p;  connection = DriverManager.getConnection(url);
        }

    }

    /**
     *
     * @return     Coneccion a la DB
     */
    public Connection conseguirConexion() {
        return connection;
    }

    /**
     *
     * @return        Statement para interactuar con la DB
     * @throws SQLException    
     */
    public Statement conseguirDeclaracion() throws SQLException {
        return connection.createStatement();
    }
   /**
    * Retorn ana instancia de java.sql.ResultSet, con los datos
    * correspondientes a la consulta realizada
    * @param sql    Cadena que representa la consulta en lenguaje SQL a partir de
    * la cual se obtiene los datos
    * @return       Datos resultantes de la consulta
    * @throws java.sql.SQLException
    */
    public ResultSet realizarConsulta(String sql) throws SQLException{
        if(sql == null)
         &nbs p;  throw new SQLException("La consulta no puede ser nula");
        
        ResultSet result = null;
        result = conseguirDeclaracion().executeQuery(sql);
        return result;
    }
    /**
     * Permite cerrar la coexion que se ha establecido a la DB
     */
    public void cerrarConexion(){
        try {
         &nbs p;  conseguirConexion().close();
        } catch (SQLException ex) {
         &nbs p;  System.out.println("EEROR, " + ex);
        }
    }
    /**
     * Ejecuta algun tipo de proceso SQL ya sea insercion, actualizacion o
     * eliminacion de datos
     * @param sql   Cadena SQL que representa la accion a realizar en la DB
     * @throws java.sql.SQLException
     */
    public void ejecutarProceso(String sql) throws SQLException{
        if(sql == null)
         &nbs p;  throw new SQLException("La operacion no puede ser nula");
        
        conseguirDeclaracion().executeUpdate(sql);
        
    }
   
    
}

Esta calse anterior equivale a la que tu has creado si deseas puedes usar este codigo yo lo uso en la mayoria de mis programas(disculpa la escasa documentacion)

#unapprove_message#
RE: RE: RE: RE: Problemas Conexion con JDBC 25/11/2008 15:46
kool_084

APPLET DE PRUEBA

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;

/**
 *
 * @author Jaime Ruales
 */
public class EjemploDB extends JApplet implements ActionListener{

    private Conexion con;
    private JTextPane txt;
         &nbs p; 
    public void init() {
        JButton btn = new JButton("Consultar");
        txt = new JTextPane();
        txt.setEditable(false);
        JScrollPane scroll = new JScrollPane(txt);
        getContentPane().add(btn, BorderLayout.PAGE_START);
        getContentPane().add(scroll, BorderLayout.CENTER);
        btn.addActionListener(this);
        setSize(400, 300);
    }

    /**
     * La accion del boton como solo es uno no se valida nada
     * @param e evento
     */
    public void actionPerformed(ActionEvent e) {
        ResultSet res = null;
        try {
         &nbs p;  ////Ya en algo mas grande se habre la coneccion al inicio del programa y se cierra al final
         &nbs p;  //Por ser un ejemplo la abro y cierro aqui mismo
         &nbs p;  con = new Conexion(Conexion.DRIVER_JAVA_DB, "localhost",
         &nbs p;          Conexion.PUERTO_JAVA_DB, "ejemplo", "ejemplo", "ejemplo");
         &nbs p;  res = con.realizarConsulta("select * from datos");
         &nbs p;  String separa = System.getProperty("line.separator"); //separador del inea
         &nbs p;  txt.setText("Cod\t\tNombre" + separa + "==================================" );
         &nbs p;  while(res.next()){                
         &nbs p;      txt.setText(txt.getText() + separa + res.getInt(1) + "\t\t" + res.getString(2));                
         &nbs p;  }
        } catch (SQLException ex) {
         &nbs p;  System.out.println("ERROR de coneccion " + ex);
        }finally{        &nb sp;  
         &nbs p;  con.cerrarConexion();
        }           ;     
    }


}
 

 

Bueno en el ejemplo use la base de datos JAVA (Derby)  no tenia a mano MySQL, para tu caso solo cambiarias el driver que ya esta en la clase de coneccion, el puerto por el que se conecta tmabien ya esta a menos que lo hayas cambiado, el nombre de la DB el usuario y contrasena, en mi caso todos son ejemplo, y por ultimo no olvidarte de incluir la libreria de JDBC para MySQL.

O puedes usar el puente ODBC, bueno en fin espero te sirva el codigo

 

#unapprove_message#
RE: Problemas Conexion con JDBC 26/11/2008 15:35
anonymous

Ok compañero kool_084, te agradesco mucho tu ayuda. Ya mismo voy a probar este codigo y haber que modificaciones le hago y luego os comento.

Una vez mas mil gracias a esta fabulosa  comunidad.

Saludos desde Colombia, Cristhian Fernandez.

#unapprove_message#
RE: Problemas Conexion con JDBC 27/11/2008 17:23
anonymous

Compañero kool_084 , perdona mi ignorancia, pero no comprendo mucho tu codigo; lo he leido, releido y no logro entender muchas cosas, trate de adaptarlo y no consegui mucho la verdad. Si fueras tan amable de explicarmelo, o algun otro compañero forero os lo agradeceria mucho.

Ya la tarea se debe presentar hoy jueves, no la presentare como se debe pero bueno.....

Ahora lo que quiero es aprender por mi cuenta.

#unapprove_message#
RE: Problemas Conexion con JDBC 27/11/2008 18:14
kool_084

Bueno explicame que no entiendes y con gusto, la verdad trate de hacerlo muy claro pero bueno 

La calse conexion esta lista y la he usado ya mucho tiempo para cosas simple, seguramente tu error esta en otro lugar, es decir en la implementacion, en la coneccion cuando se instancia yo uso  elDRIVER:JAVA_DB y PUERTO_JAVA_DB tu deberias usar DRIVER_MYSQL y PUERT_MYSQL, deberias poner el host donde esta la DB en mi caso es la misma maquina x eso pongo "localhost", luego donde esta "ejemplo" es primero el nombre de la DB, luego el usaurio, luego el password, si se conecta de forma exitosa ya podras interactuar con la DB casi en todo aspecto, solo debes usar los datos del resultset y mostrarlos donde y como desees

Mejor xq no me dices mas o menos donde estan tus dudas para ver si te ayudo de mejor manera

#unapprove_message#
#thread_expired#.
Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano