entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

mostrar en un jtable la consulta de 3 tablas de una BD mysql

mi consulta es esta:

select p.codPad,p.Nombre,a.nombre,g.Numero,p.Direccion,p.Direccion from alumno a , grado g , padre p where p.CodAlum=a.CodAlum and a.codGrado=g.codGrado

en mi formulari java coloque en el catch , e.printStackTrace() y me muestra este mensaje , porque ? y que puedo hacer para correguir mi error?

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'p.CodAlum=a.CodAlum and a.codGrado=g.codGrado' at line 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
    at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
    at Form.Reportes.<init>(Reportes.java:36)
    at Form.Reportes$1.run(Reportes.java:121)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

0voto

white comentado

Hola samuel R. que problema tienes con el código que has puesto? no logro adivinar o intuir el problema, podrias poner una descripcion de tu problema? ya que es algo complicado poder ayudarte con el tema así. podria ser algo que pulir en la consulta o podria venir de la clase DefaultTableModel , en lo posible:

  • intenta agregar el codigo de DefaultTableModel
  • decirnos cual es la estructura de las tablas

0voto

Samuel R. comentado

Bueno, el caso es asi yo tengo tres tablas(alumno,padre y grado) si bien pueden apresiar en el la consulta quiero que me muestre el codigo del padre con su nombre , el nombre de su hijo (alumno) , el grado en que esta el alumno, la direccion y el telefono; la consulta me muestra lo que deseo pues lo genere en el mysql , el caso es que al mommento Resulset debe mostrar los registros de la consulta en los campos del jtable ya generados como se ve en el DefaultTableModel pero no me muestra nada.
Gracias por su atencion a mi problema.

0voto

Gust4v0x comentado

Para agregar más cosas a la pregunta, solo edítala (Y)

0voto

Samuel R. comentado

intente lo que me dijiste y me muestra esto
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'p.CodAlum=a.CodAlum and a.codGrado=g.codGrado' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at Form.Reportes.<init>(Reportes.java:36)
at Form.Reportes$1.run(Reportes.java:121)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

0voto

Gust4v0x comentado

Coloca tu consulta sql en una actualización de tu pregunta.

Edita tu post original (pregunta) y por cada actualización coloca un UPDATE: descripción. No comentes, es innecesario bro. Saludos!

0voto

white comentado

yo no puedo ver tu consulta :c la has puesto, pero no veo como la programaste me refiero a esta parte:

    String sql;
    sql = "SELECT ... "
         + "FROM ... "
         + "WHERE ...";

   ResultSet rs = stmt.executeQuery(sql);

puedes agregarla en el tema? es para saber por que tienes el error

use near 'p.CodAlum=a.CodAlum and a.codGrado=g.codGrado' at line 1

0voto

Samuel R. comentado

mi consulta es la siguiente:
select p.codPad,p.Nombre,a.nombre,g.Numero,p.Direccion,p.Direccion from alumno a , grado g , padre p where p.CodAlum=a.CodAlum and a.codGrado=g.codGrado

Claro tambien lo intente con inner join y me sale correcto , solo que al momento de colocarlo en el string query para el Resultset me sale que hay error en la clausula que no es de mi mysql

0voto

white comentado

no puedo ver como esta colocada esa consulta en tu archivo fuente, se me ocurre algo, copia y pega todo tu archivo necesito el que contiene la consulta y el que contiene el modelo de la tabla, hazlo en esta pagina o alguna similar:

http://paste.ofcode.org/

2 Respuestas

1voto

Gust4v0x Puntos910

Quizás no está reconociendo adecuadamente lo que le pasas por "getString()", ya que éste método recibe el nombre de una columna.

Intenta ésto:

DefaultTableModel model = new DefaultTableModel()
JTable table = new JTable(model);

model.addColumn("CodPadre");
model.addColumn("Nombre");
model.addColumn("Hijo");
model.addColumn("Grado");
model.addColumn("Direccion");
model.addColumn("Telefono");

try {
    Object[] data = new Object[6];

    while(rs.next()) {
        for(byte i=0; i<data.length; i++) {
            data[i] = rs.getObject((i+1));
        }
        model.addRow(data);
    }

}
catch (Exception ex) {
    JOptionPane.showMessageDialog(this,"La consulta no ha devuelto datos, "+ex.getMessage());
}

0voto

Samuel R. comentado

igual brother , me sale error :((

1voto

rafael.naranjo Puntos280

Amigo el error que te sale es por que estas haciendo mal la consulta a la base de datos seguramente no estas haciendo adecuadamente la consulta SQL lo cual te esta generando esa exception de java, te podria colaborar si colocas el modelo de datos y la consulta que estas haciendo en sql con mucho gusto te ayudo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta