Añadir un cuadro de texto en una base de datos MySQL

Tengo este programa que se conecta a una base de datos en mysql pero ya trae una consulta predeterminada lo que no se hacer es como meterle un cuadro de texto donde pregunte que datos necesito o que yo pueda ingresar la expresión de SQL.
Gracias
Import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class MostrarResultadosConsulta extends JFrame {
    // controlador JDBC y URL de la base de datos
    static final String CONTROLADOR_JDBC = "com.mysql.jdbc.Driver";
    static final String URL_BASEDEDATOS = "jdbc:mysql://localhost/agenda?user=root&password=121281";
    // la consulta predeterminada recupera todos los datos de la tabla autores
    static final String CONSULTA_PREDETERMINADA = "SELECT * FROM datos";
    private ModeloTablaResultados modeloTabla;
    private JTextArea areaConsulta;
    // crear objeto ModeloTablaResultados y GUI
    public MostrarResultadosConsulta() {
        super( "Resultados de la consulta" );
        try {
            modeloTabla = new ModeloTablaResultados( CONTROLADOR_JDBC, URL_BASEDEDATOS,
                    CONSULTA_PREDETERMINADA );
            JTable tablaResultados = new JTable(modeloTabla);
            getContentPane().setLayout(new BorderLayout());
            getContentPane().add( new JScrollPane(tablaResultados) , BorderLayout.CENTER );
            setSize( 500, 250 );
            setVisible( true );
        }
        catch ( ClassNotFoundException claseNoEncontrada ) {
            JOptionPane.showMessageDialog( null,
                    "No se encontro el controlador de la base de datos", "No se encontro el controlador",
                    JOptionPane.ERROR_MESSAGE );
            System.exit( 1 );
        }
        catch ( SQLException excepcionSQL ) {
            JOptionPane.showMessageDialog( null, excepcionSQL.getMessage(),
                    "Error en la base de datos", JOptionPane.ERROR_MESSAGE );
            // asegurar que la conexión a la base de datos esté cerrada
            modeloTabla.desconectarDeLaBaseDeDatos();
            System.exit( 1 );   // terminar la aplicación
        }
        setDefaultCloseOperation( DISPOSE_ON_CLOSE );
        addWindowListener(
                new WindowAdapter() {
            // desconectarse de la base de datos y salir cuando se haya cerrado la ventana
            public void windowClosed( WindowEvent evento ) {
                modeloTabla.desconectarDeLaBaseDeDatos();
                System.exit( 0 );
            }
        }
        );
    }
    public static void main( String args[] ) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        new MostrarResultadosConsulta();
    }
}

1 respuesta

Respuesta
1
Utilizando el objeto PrepareStatement es muy sencillo, tu consulta quedaría así:
PrepareStatement pstmt = conection.preparedStatement("SELECT * FROM datos where id= ?");
pstmt.setString(1,StringDeLaVentana);
pstmt.execute();
Hola muchas gracias ya puse el código que me indicabas para la consulta y me aparece el siguiente error:
G:\MostrarResultadosConsulta.java:17: <identifier> expected
    pstmt.setString(1,StringDeLaVentana);
                   ^
G:\MostrarResultadosConsulta.java:17: illegal start of type
    pstmt.setString(1,StringDeLaVentana);
                    ^
G:\MostrarResultadosConsulta.java:17: <identifier> expected
    pstmt.setString(1,StringDeLaVentana);
                                       ^
G:\MostrarResultadosConsulta.java:18: <identifier> expected
    pstmt.execute();
El código es el mismo puse en comentarios la consulta anterior y agregue la nueva no se si sea así:
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class MostrarResultadosConsulta extends JFrame {
    // controlador JDBC y URL de la base de datos
    static final String CONTROLADOR_JDBC = "com.mysql.jdbc.Driver";
    static final String URL_BASEDEDATOS = "jdbc:mysql://localhost/agenda?user=root&password=121281";
    // la consulta predeterminada recupera todos los datos de la tabla autores
    //static final String CONSULTA_PREDETERMINADA = "SELECT * FROM datos";
    PrepareStatement pstmt = conection.preparedStatement("SELECT * FROM datos where id= 1");
    pstmt.setString(1,StringDeLaVentana);
    pstmt.execute();
    private ModeloTablaResultados modeloTabla;
    private JTextArea areaConsulta;
    // crear objeto ModeloTablaResultados y GUI
    public MostrarResultadosConsulta() {
        super( "Resultados de la consulta" );
        try {
            modeloTabla = new ModeloTablaResultados( CONTROLADOR_JDBC, URL_BASEDEDATOS,
                    CONSULTA_PREDETERMINADA );
            JTable tablaResultados = new JTable(modeloTabla);
            getContentPane().setLayout(new BorderLayout());
            getContentPane().add( new JScrollPane(tablaResultados) , BorderLayout.CENTER );
            setSize( 500, 250 );
            setVisible( true );
        }
        catch ( ClassNotFoundException claseNoEncontrada ) {
            JOptionPane.showMessageDialog( null,
                    "No se encontro el controlador de la base de datos", "No se encontro el controlador",
                    JOptionPane.ERROR_MESSAGE );
            System.exit( 1 );
        }
        catch ( SQLException excepcionSQL ) {
            JOptionPane.showMessageDialog( null, excepcionSQL.getMessage(),
                    "Error en la base de datos", JOptionPane.ERROR_MESSAGE );
            // asegurar que la conexión a la base de datos esté cerrada
            modeloTabla.desconectarDeLaBaseDeDatos();
            System.exit( 1 );   // terminar la aplicación
        }
        setDefaultCloseOperation( DISPOSE_ON_CLOSE );
        addWindowListener(
                new WindowAdapter() {
            // desconectarse de la base de datos y salir cuando se haya cerrado la ventana
            public void windowClosed( WindowEvent evento ) {
                modeloTabla.desconectarDeLaBaseDeDatos();
                System.exit( 0 );
            }
        }
        );
    }
    public static void main( String args[] ) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        new MostrarResultadosConsulta();
    }
}
¿No se si este bien así?. Muchas gracias no sabes como te agradezco.
Te recomiendo que hagas una clase que se llame Servicio, de la siguiente manera:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author Daniel Montero
 */
public class Servicio {
    // controlador JDBC y URL de la base de datos
    static final String CONTROLADOR_JDBC = "com.mysql.jdbc.Driver";
    static final String URL_BASEDEDATOS = "jdbc:mysql://localhost/agenda?user=root&password=121281";
    protected Connection conexion; //Se declar protected para que ServicioCliente pueda tener acceso
    /** Creates a new instance of Servicio */
    public Servicio() {
    }
    public Connection conectarse (){
        try {
            Class.forName(CONTROLADOR_JDBC);
            conexion = DriverManager.getConnection(URL_BASEDEDATOS);
            System.out.println ("Conexión satisfactoria");
        } catch (SQLException e){
            System.out.println ("No se pudo realizar la conexión");
        } catch (ClassNotFoundException e){
            System.out.println ("No se encuentró el driver");
        }   
        return conexion;
    }
    public void desconectarse (){
        try {
            if (conexion != null){
                conexion.close();
                System.out.println("Desconexión satisfactoria");
            }
        } catch (SQLException e) {
            System.out.println ("No se realizó la desconexión");
        }
    }
}
Después tienes que hacer una clase ServicioCosas que herede de la anterior de la siguiente manera:
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import oracle.jdbc.driver.OracleTypes;
import org.efibs.Examen2.Estudiante.Estudiante;
/**
 *
 * @author Cynthia Mecatl
 */
public class ServicioCosa extends Servicio {
    private static final String CONSULTAR_ID = "select * from cosas where id = ?";
    public String consultarId (int id){
        conectarse();
        PrepareStatement pstmt = null;
        ResultSet rset = null;
        String cadena = "";
        try{
            pstmt = conexion.prepareCall(CONSULTAR_ID);
            pstmt.setInt(1,id);           
            rset = pstmt.executeQuery();
            rset.next();
            cadena += rset.getInt("ID");
            cadena += rset.getString("NOMBRE"),
        }catch(SQLException ex){
            ex.printStackTrace();
        }finally{
            try {
                if(cstmt != null)
                    cstmt.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            desconectarse();
        }
        return cadena;
   }
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas