A ver si me podeis echar una mano en esto, es un ejemplo sencillo pero no doy con ello. Gracias
Ahora mismo estoy usando EasyPHP y Netbeans.
Me he puesto manos a la obra, para ver como funciona, con un ejemplo muy sencillito. Un boton, y un jText, cuando pinche el boton rescato los datos de la BBDD. La BBDD tiene una tabla, Persona, con un campo Nombre, con 2 filas, pepe y juan.
Bien es un ejemplo sencillito, para ir tocando poco a poco y ver como funciona.
El caso es que no se rescatar los datos de la BBDD y tratarlo como variables de java.
He hecho esta estructura de paquetes:
La clase Agente.Java, es la que hace la conexion y creo que está bien, la pongo aqui:
Código:
package Persistencia;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
public class Agente {
protected static Agente mInstancia = null;
protected Connection mBD;
protected String driver = "com.mysql.jdbc.Driver";
protected String usuario = "root";
protected String contraseña = "";
protected String url="jdbc:mysql://localhost/Persona/";
protected Agente() throws SQLException, ClassNotFoundException {
Class.forName(driver);
mBD = (Connection) DriverManager.getConnection(url, usuario, contraseña);
}
public static Agente getAgente() throws SQLException, ClassNotFoundException {
if (mInstancia == null)
mInstancia = new Agente();
return mInstancia;
}
public Connection getBD() throws SQLException {
if(mBD.isClosed())
mBD = (Connection) DriverManager.getConnection(url, usuario, contraseña);
return mBD;
}
}
En la clase persona es la que se supone que debe rescatar los datos de la BBDD, no? Pues lo he hecho asi:
Código:
package Dominio;
import Persistencia.Agente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Persona {
String nombre;
public Persona (){
nombre="";
}
public Persona (String nombre){
this.nombre=nombre;
}
public void setNombre(String n){
nombre=n;
}
public String getNombre(){
return nombre;
}
public void recuperarInformacion() throws ClassNotFoundException, SQLException {
String SQL="SELECT Nombre FROM persona";
String nomAux="";
Connection bd=null;
PreparedStatement p=null;
bd=Agente.getAgente().getBD();
p=bd.prepareStatement(SQL);
p.setString(1,getNombre());
ResultSet r=p.executeQuery();
while(r.next()){
nomAux=r.getString(1);
}
bd.close();
setNombre(""+nomAux);
}
}
El método recuperar información es el que no me cuadra, pero creo que está bien de todos modos.
Y el metodo del botón para que me lo muestre en el jText es el siguiente, que este creo que es el que realmente tengo problemas:
Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
bbddFunciona=true;
try {
per.recuperarInformacion();
} catch (ClassNotFoundException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
jTextPane1.setText("Se ha producido un error al conectar con la base de datos.");
bbddFunciona=false;
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
A ver si me echais una mano, porque debe de ser una chorrada pero no doy con ello. Muchas gracias.
Salu2