Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2006, 10:59
hermes_patrick
 
Fecha de Ingreso: abril-2006
Ubicación: miraflores
Mensajes: 69
Antigüedad: 18 años
Puntos: 1
Representando dos tablas como objetos y relacionandolas

bueno amigos directamente mi problema es el siguiente:

tengo dos tablas en mysql :

alumno cursos
-------- ----------
IdAlumno(integer 11) IdCurso(integer 11)
nombre (varchar) IdAlumno(varchar)
apellidoPaterno(varchar) descripcion(varchar)
apellidoMaterno(varchar)
fechaRegistro(date)
horaRegistro(time)

como se aprecia un alumno puede tener muchos cursos , en ese nivel de simpleza.

bueno declaro mis dos clases :

alumno.java

package sdi.com.alumno;
import java.sql.*;

/**
*
* @author hermes patrick nuñez yaksetig
*/
public class alumno {


private int idAlumno;
private String facultad;
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private Date fechaRegistro;
private Time horaRegistro;

/** Constructor: Crea una nueva instancia de alumno */

public alumno() {
}

public void setIdAlumno(int valor){
this.idAlumno=valor;
}

public void setFacultad(String valor){
this.facultad=valor;
}

public void setNombre(String valor){
this.nombre=valor;
}

public void setApellidoPaterno(String valor){
this.apellidoPaterno=valor;
}

public void setApellidoMaterno(String valor){
this.apellidoMaterno=valor;
}

public void setFechaRegistro(Date valor){
this.fechaRegistro=valor;
}

public void setHoraRegistro(Time valor){
this.horaRegistro=valor;
}

public int getIdAlumno(){
return this.idAlumno;
}

public String getFacultad(){
return this.facultad;
}

public String getNombre(){
return this.nombre;
}

public String getApellidoPaterno(){
return this.apellidoPaterno;
}

public String getApellidoMaterno(){
return this.apellidoMaterno;
}

public Date getFechaRegistro(){
return this.fechaRegistro;
}

public Time getHoraRegistro(){
return this.horaRegistro;
}

}

y mi clase curso.java


package sdi.com.curso;
import java.sql.*;
import sdi.com.alumno.alumno;

/**
*
* @author hermes patrick nuñez yaksetig
*/
public class curso {


private int IdCurso;
private alumno oAlumno=null;
private String descripcion="-";

/** Constructor: Crea una nueva instancia de curso */

public curso() {
}

public void setIdCurso(int valor){
this.IdCurso=valor;
}

public void setAlumno(alumno oAlumno){
if (oAlumno!=null)
this.oAlumno=oAlumno;
}

public void setDescripcion(String valor){
this.descripcion=valor;
}

public int getIdCurso(){
return this.IdCurso;
}

public alumno getAlumno(){
return this.oAlumno;
}

public String getDescripcion(){
return this.descripcion;
}

}


Ahora.... yo estoy haciendo una clase controladora de alumno :

package sdi.com.alumno;

import java.sql.*;
import java.util.*;
import jdbc.*;

/**
*
* @author hermes patrick nuñez yaksetig
*/
public class controladorAlumno {



/** Constructor: Crea una nueva instancia de controladorAlumno */
private controladorAlumno() {
}

public static Vector listarAlumnos()throws Exception{
Vector lista = null;
alumno oAlumno = null;
Connection conexion = null;
Statement stmt = null;
String sql = null;
ResultSet resultados = null;
try{

conexion = ConexionMySQL.getConnection();

stmt = conexion.createStatement();
sql = "select * from alumno ";
resultados = stmt.executeQuery(sql);

if (resultados.next()){
lista = new Vector();
do{
oAlumno = new alumno();
oAlumno.setIdAlumno(resultados.getInt("IdAlumno")) ;
oAlumno.setNombre(resultados.getString("nombre"));
oAlumno.setApellidoPaterno(resultados.getString("a pellidoPaterno"));
oAlumno.setApellidoMaterno(resultados.getString("a pellidoMaterno"));


lista.add(oAlumno);
}while(resultados.next());
}
resultados.close();
stmt.close();
conexion.close();
} catch(Exception error){
System.out.println("Error en el método " +
"listaAlumnos() por: "+error.getMessage());
error.printStackTrace();
} finally{
try{
if (conexion!=null&&!conexion.isClosed())
conexion.close();
}catch(Exception excepcion){}
}
return lista;
}

public static String registrarAlumno(alumno oAlumno){
String mensaje="";
Connection con = null;
try{
int nroFilas=0;
String sql="INSERT INTO alumno(nombre, apellidoPaterno, apellidoMaterno,fechaRegistro,horaRegistro) " +
"VALUES(?,?,?,CURRENT_DATE,CURRENT_TIME)";
con = ConexionMySQL.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, oAlumno.getNombre());
pstmt.setString(2, oAlumno.getApellidoPaterno());
pstmt.setString(3, oAlumno.getApellidoMaterno());


nroFilas=pstmt.executeUpdate();
if (nroFilas>0)
mensaje="Registro exitoso";
else
mensaje="No se pudo registrar";
pstmt.close();
con.close();
}catch(Exception error){
mensaje = "Error en el registro del alumno por " +
error.getMessage();
error.printStackTrace();
} finally{
try{
if (con!=null&&!con.isClosed())
con.close();
}catch(Exception excepcion){}
}
return mensaje;
}
}


y una clase controladora de curso :

package sdi.com.curso;


import java.sql.*;
import java.util.*;
import jdbc.*;
import sdi.com.alumno.alumno;
/**
*
* @author hermes patrick nuñez yaksetig
*/
public class controladorCurso {

/** Creates a new instance of controladorCurso */
private controladorCurso() {
}

public static Vector listarCursos()throws Exception{
Vector lista=null;
curso oCurso=null;
Connection conexion=null;
Statement stmt=null;
String sql=null;
ResultSet resultados=null;

try{

conexion = ConexionMySQL.getConnection();

stmt = conexion.createStatement();
sql="select * from cursos";
resultados = stmt.executeQuery(sql);

if (resultados.next()){
lista = new Vector();
do{
oCurso = new curso();
oCurso.setIdCurso(resultados.getInt("IdCurso"));
oCurso.setAlumno(resultados.getAlumno("IdAlumno")) ;
oCurso.setDescripcion(resultados.getString("descri pcion"));

lista.add(oCurso);
}while(resultados.next());
}

resultados.close();
stmt.close();
conexion.close();
} catch(Exception error){
System.out.println("Error en el método " +
"listaCursos() por: "+error.getMessage());
error.printStackTrace();
} finally{
try{
if (conexion!=null&&!conexion.isClosed())
conexion.close();
}catch(Exception excepcion){}
}
return lista;

}

}


Es en esta clase controladora de curso donde viene mi problema pues si se aprecia bien es exactmente cuando recupero valores de la base de datos para meterlos en un objeto curso, donde radica el problema, como se ve primero creo instancio un nuevo curso, luego asigno el IdCurso correspondiente, y es despues de ello que me sale el error, es que no se como asignar al campo idAlumno, este campo viene a ser coo un (FK) de la tabla alumno sin embargop tiene que ser parte del objeto curso , diganme porfavor como hago pues es en esa linea de codigo donde me sale un error que dice "Cannot find simbol......
symbol: method getAlumno(java.Lang.String)
Location: interface java.sql.resultSet"

Como se vera es aki donde se establace una relacion entre las dos tablas pues un alumno puede tener uno o muchos cursos y bueno el problema , mi problema es comoo se relaciona en esa parte del codigo pues imagino que se hace en codigo ya quue mysql no tiene relaciones ... espero haber sido claro y poder recibir su ayuda mis colegas..gracias de antemano
__________________
Patrick:policia: