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

Problema con Excepciones

Estas en el tema de Problema con Excepciones en el foro de Java en Foros del Web. Tengo una clase llamada alumnos donde quiero enviar los parametros (codigo,nombre,carrera,semestre) hacia la clase GuardarDatos. El problema se me presenta que para que la conexion ...
  #1 (permalink)  
Antiguo 06/09/2008, 13:46
 
Fecha de Ingreso: agosto-2008
Mensajes: 64
Antigüedad: 15 años, 8 meses
Puntos: 0
Problema con Excepciones

Tengo una clase llamada alumnos donde quiero enviar los parametros (codigo,nombre,carrera,semestre) hacia la clase GuardarDatos. El problema se me presenta que para que la conexion a la BD me funcione debo usar el siguiente codigo:

import java.sql.*;
import javax.swing.*;

public class GuardarDatos{

private Connection con;

public Connection getConexion() throws SQLException{

String dri = "com.ms.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:Estudiantes";

try{
Class.forName(dri);
con = DriverManager.getConnection(url);
}
catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"No se encuentra el driver");
}
return con;
}

public GuardarDatos(int c,String n,String k,int s) throws SQLException{

con = getConexion();
if(con!=null){

try{
PreparedStatement presta = con.prepareStatement("INSERT INTO datos values(?,?,?,?);");
presta.setString(1,String.valueOf(c));
presta.setString(2,n);
presta.setString(3,k);
presta.setString(4,String.valueOf(s));
con.setAutoCommit(true);
presta.execute();
presta.close();
}
finally{
con.close();
}
}else{
JOptionPane.showMessageDialog(null,"No hay conexion");
}
}
}

Y a la hora de enviar los parametros me aparece el siguiente error:

unreported exception java.sql.SQLException; must be caught or declared to be thrown

Necesito que alguien me colabore con una solucion y una explicacion del porque. Gracias
  #2 (permalink)  
Antiguo 07/09/2008, 11:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 48
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema con Excepciones

pues la rspuesta es simle estas haciendo uso de un try sin un bloque catch

la estructurea normal de un bloque try catch es el sgte

Código HTML:
try{
//bloque que podria llamar a una excepcion
}
catch(Exception ex){
//acciones si ocurre una excepcion
}
finally{
//bloque que se realizara SI o SI a pesar de todo
}
pues es solo eso en este pedazo de codigo te falta completar lo que va en ROJO

try{
PreparedStatement presta = con.prepareStatement("INSERT INTO datos values(?,?,?,?);");
presta.setString(1,String.valueOf(c));
presta.setString(2,n);
presta.setString(3,k);
presta.setString(4,String.valueOf(s));
con.setAutoCommit(true);
presta.execute();
presta.close();
}catch(Exception ex){
//si deseas colocas algo aqui sino dejalo asi
}

finally{
con.close();
}
  #3 (permalink)  
Antiguo 07/09/2008, 12:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 64
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con Excepciones

Ya puse lo que me dijo, aun me sale el problema en la clase principal, este es el metodo ke utilizo para enviar los datos mediante las clases, no se si esta mal el llamado al metodo de la clase GuardarDatos, si alguien sabe como puedo arreglarlo.

public void actionPerformed(ActionEvent ae){

Object obj = ae.getSource();

if(obj == btnguardar){

int cod = Integer.parseInt(tcod.getText());
String nom = tnom.getText();
String car = tcar.getText();
int sem = Integer.parseInt(tsem.getText());
double n1 = Double.parseDouble(tn1.getText());
double n2 = Double.parseDouble(tn2.getText());
double n3 = Double.parseDouble(tn3.getText());
double n4 = Double.parseDouble(tn4.getText());
double n5 = Double.parseDouble(tn5.getText());
double pro = ((n1+n2+n3+n4+n5)/5);
GuardarDatos gua = new GuardarDatos(cod,nom,car,sem);
GuardarNotas gnot = new GuardarNotas();
}
}
  #4 (permalink)  
Antiguo 07/09/2008, 13:12
 
Fecha de Ingreso: agosto-2008
Mensajes: 48
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema con Excepciones

pues ahora que me fijo bien estas haciendo mal uso de la Programacion orientada a objetos ..
yo te recomiendo que lo hagas de esta manera :

la clase GuardarDatos debe ser asi

Código:
mport java.sql.*;
import javax.swing.*;

public class GuardarDatos {
	
	private Connection con;
	private int codigo;
	private String nombre;
	private String car;
	private int semestre;
	
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getCar() {
		return car;
	}
	public void setCar(String car) {
		this.car = car;
	}
	public int getSemestre() {
		return semestre;
	}
	public void setSemestre(int semestre) {
		this.semestre = semestre;
	}
	
	private void guardaNotas(){
		try {
			con = getConexion();
			
			if(con!=null){
				try{
					
					PreparedStatement presta = con.prepareStatement("INSERT INTO datos values(?,?,?,?);");
					presta.setInt(1,codigo);
					presta.setString(2,nombre);
					presta.setString(3,car);
					presta.setInt(4,semestre);
					con.setAutoCommit(true);
					presta.execute();
					presta.close();
				}
				catch (Exception e) {
					// TODO: handle exception
				}
				finally{
					con.close();
				}
			}else{
					JOptionPane.showMessageDialog(null,"No hay conexion");
			}		
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
	
	private Connection getConexion() throws SQLException{
			
		String dri = "com.ms.jdbc.odbc.JdbcOdbcDriver";
		String url = "jdbc:odbc:Estudiantes";

		try{
		Class.forName(dri);
		con = DriverManager.getConnection(url);
		}
		catch(ClassNotFoundException e){
		JOptionPane.showMessageDialog(null,"No se encuentra el driver");
		}
		return con;
	}
	

}
y finalmente al llamarlo desde la otra clase debes hacerlo de la siguiente manera :

Código:
GuardarDatos gua = new GuardarDatos();
gua.setCodigo(cod);
gua.setNombre(nom);
gua.setCar(car);
gua.setSemestre(sem);
gua.guardarNotas();
  #5 (permalink)  
Antiguo 07/09/2008, 17:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 64
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con Excepciones

Gracias por el dato, ya no me salen errorres pero aun sigue sin funcionar, no guarda nada en la BD. Sabe porque sera?
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 16:51.