Problema con getSelectedItem
Publicado por Jose (13 intervenciones) el 24/03/2017 14:31:42
He creado un pequeño programa el cual al inicializarse carga una una tabla de una base de datos llamada 0 en un JComboBox. Esta tabla contiene nombres de bases de datos llamados 1, 2 y 3.
Lo que yo quiero es que al seleccionar uno de estos Item obtenga este dato y lo pase mediante una variable a una consulta SQL a traves de la variable dbName, la cual dependiendo del dato seleccionado ejecute la consulta en la base de datos 1, 2 ó 3.
Estoy utilizando el modelo-vista-controlador.
He conseguido que se cargue la base de datos 0 y que realice la consulta si utilizo en vez de una variable, directamente el nombre de la base de datos 1, 2 ó 3.
Utilizo esta sentencia para conectar y sé que el problema está en la variable dbName.
Connection accesoBBDD=miConexion.dameConexion(dbName);
No consigo pasar el String obtenido al seleccionar el Item de JComboBox
Las clases que utilizo son las siguientes:
package modelo;
import java.sql.*;
import javax.swing.JOptionPane;
public class ModeloConsultasMatricula {
public ModeloConsultasMatricula() {
miConexion1=new Conexion();
} //Fin del constructor ModeloConsultasMatricula
public String getEjercicioSeleccionado (String ejercicio){
return ejercicio;
}
public ResultSet filtraMatricula(String matricula){
Connection accesoBBDD=miConexion1.dameConexion1(dbName1);
rsFiltraMatricula=null;
try{
if(!matricula.equals("")){
psEnviaConsulta=accesoBBDD.prepareStatement(consultaMatricula);
psEnviaConsulta.setString(1, matricula);
rsFiltraMatricula=psEnviaConsulta.executeQuery();
}else{
JOptionPane.showMessageDialog(null, "Debes escribir un texto en el campo Matrícula");
}
}catch(Exception e){
System.out.println("No se ha podido ejecutar el ResulSet filtraBBDD clase EjecutaConsultasMatriculas");
e.printStackTrace();
}
return rsFiltraMatricula;
}
private final Conexion miConexion1;
private ResultSet rsFiltraMatricula;
private PreparedStatement psEnviaConsulta;
private String consultaMatricula=
"SELECT clientes.CODIGO, clientes.NOMBRE, c_albven.FECHA, c_albven.NUMERO, multica2.VALOR"
+ " FROM multica2"
+ " JOIN c_albven ON multica2.NUMERO=c_albven.NUMERO"
+ " JOIN clientes ON c_albven.CLIENTE=clientes.CODIGO"
+ " WHERE multica2.VALOR = ?";
private String dbName1;
//ModeloSeleccionaEjercicio objSeleccionaEjercicio=new ModeloSeleccionaEjercicio();
} //Fin de la clase ModeloConsultasMatricula
package controlador;
import modelo.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.table.DefaultTableModel;
import vista.*;
public class ControladorConsultasMatricula implements ActionListener{
public ControladorConsultasMatricula(BusquedaMatriculas elmarco) {
this.elmarco=elmarco;
} //Fin del constructor ControladorConsultasMatricula
@Override
public void actionPerformed(ActionEvent e) {
ejercicioSeleccionado=elmarco.ejercicio.getSelectedItem().toString();
miEjercicio=objFiltraMatricula.getEjercicioSeleccionado(ejercicioSeleccionado);
System.out.println(miEjercicio);
//Almacena en la variable seleccionMatricula el dato seleccionado al hacer clic
String seleccionMatricula=elmarco.matricula.getText().toString();
rsFiltraMatricula=objFiltraMatricula.filtraMatricula(seleccionMatricula);
try{
modeloTabla=new DefaultTableModel(null, titulos);
Object datos[]=new Object[5]; //Número de columnas de la consulta
while(rsFiltraMatricula.next()){
for(int i=0; i<5; i++){
datos[i]=rsFiltraMatricula.getObject(i+1);
}
modeloTabla.addRow(datos);
}
elmarco.t_datos.setModel(modeloTabla);
rsFiltraMatricula.close();
}catch (SQLException ex){
System.out.println("No se ha podido ejecutar el ResulSet rs clase ControladorBotonEjecuta");
ex.printStackTrace();
}
}
private final BusquedaMatriculas elmarco;
private String ejercicioSeleccionado, miEjercicio;
Ejercici ejercicio=new Ejercici();
ModeloConsultasMatricula objFiltraMatricula=new ModeloConsultasMatricula();
private ResultSet rsFiltraMatricula;
DefaultTableModel modeloTabla;
String titulos[]=new String[] {"Código", "Nombre", "Fecha Albarán", "Nº Albarán", "Matrícula"};
} //Fin de la clase ControladorConsultasMatricula
Os agradeciría que me ayudaseis pues llevo bastante tiempo con el problema y no consigo solucionarlo
Lo que yo quiero es que al seleccionar uno de estos Item obtenga este dato y lo pase mediante una variable a una consulta SQL a traves de la variable dbName, la cual dependiendo del dato seleccionado ejecute la consulta en la base de datos 1, 2 ó 3.
Estoy utilizando el modelo-vista-controlador.
He conseguido que se cargue la base de datos 0 y que realice la consulta si utilizo en vez de una variable, directamente el nombre de la base de datos 1, 2 ó 3.
Utilizo esta sentencia para conectar y sé que el problema está en la variable dbName.
Connection accesoBBDD=miConexion.dameConexion(dbName);
No consigo pasar el String obtenido al seleccionar el Item de JComboBox
Las clases que utilizo son las siguientes:
package modelo;
import java.sql.*;
import javax.swing.JOptionPane;
public class ModeloConsultasMatricula {
public ModeloConsultasMatricula() {
miConexion1=new Conexion();
} //Fin del constructor ModeloConsultasMatricula
public String getEjercicioSeleccionado (String ejercicio){
return ejercicio;
}
public ResultSet filtraMatricula(String matricula){
Connection accesoBBDD=miConexion1.dameConexion1(dbName1);
rsFiltraMatricula=null;
try{
if(!matricula.equals("")){
psEnviaConsulta=accesoBBDD.prepareStatement(consultaMatricula);
psEnviaConsulta.setString(1, matricula);
rsFiltraMatricula=psEnviaConsulta.executeQuery();
}else{
JOptionPane.showMessageDialog(null, "Debes escribir un texto en el campo Matrícula");
}
}catch(Exception e){
System.out.println("No se ha podido ejecutar el ResulSet filtraBBDD clase EjecutaConsultasMatriculas");
e.printStackTrace();
}
return rsFiltraMatricula;
}
private final Conexion miConexion1;
private ResultSet rsFiltraMatricula;
private PreparedStatement psEnviaConsulta;
private String consultaMatricula=
"SELECT clientes.CODIGO, clientes.NOMBRE, c_albven.FECHA, c_albven.NUMERO, multica2.VALOR"
+ " FROM multica2"
+ " JOIN c_albven ON multica2.NUMERO=c_albven.NUMERO"
+ " JOIN clientes ON c_albven.CLIENTE=clientes.CODIGO"
+ " WHERE multica2.VALOR = ?";
private String dbName1;
//ModeloSeleccionaEjercicio objSeleccionaEjercicio=new ModeloSeleccionaEjercicio();
} //Fin de la clase ModeloConsultasMatricula
package controlador;
import modelo.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.table.DefaultTableModel;
import vista.*;
public class ControladorConsultasMatricula implements ActionListener{
public ControladorConsultasMatricula(BusquedaMatriculas elmarco) {
this.elmarco=elmarco;
} //Fin del constructor ControladorConsultasMatricula
@Override
public void actionPerformed(ActionEvent e) {
ejercicioSeleccionado=elmarco.ejercicio.getSelectedItem().toString();
miEjercicio=objFiltraMatricula.getEjercicioSeleccionado(ejercicioSeleccionado);
System.out.println(miEjercicio);
//Almacena en la variable seleccionMatricula el dato seleccionado al hacer clic
String seleccionMatricula=elmarco.matricula.getText().toString();
rsFiltraMatricula=objFiltraMatricula.filtraMatricula(seleccionMatricula);
try{
modeloTabla=new DefaultTableModel(null, titulos);
Object datos[]=new Object[5]; //Número de columnas de la consulta
while(rsFiltraMatricula.next()){
for(int i=0; i<5; i++){
datos[i]=rsFiltraMatricula.getObject(i+1);
}
modeloTabla.addRow(datos);
}
elmarco.t_datos.setModel(modeloTabla);
rsFiltraMatricula.close();
}catch (SQLException ex){
System.out.println("No se ha podido ejecutar el ResulSet rs clase ControladorBotonEjecuta");
ex.printStackTrace();
}
}
private final BusquedaMatriculas elmarco;
private String ejercicioSeleccionado, miEjercicio;
Ejercici ejercicio=new Ejercici();
ModeloConsultasMatricula objFiltraMatricula=new ModeloConsultasMatricula();
private ResultSet rsFiltraMatricula;
DefaultTableModel modeloTabla;
String titulos[]=new String[] {"Código", "Nombre", "Fecha Albarán", "Nº Albarán", "Matrícula"};
} //Fin de la clase ControladorConsultasMatricula
Os agradeciría que me ayudaseis pues llevo bastante tiempo con el problema y no consigo solucionarlo
Valora esta pregunta


0