Foro de elhacker.net

Programación => Java => Mensaje iniciado por: miniricky en 22 Enero 2014, 20:11 pm



Título: problemas en consultas sql java
Publicado por: miniricky en 22 Enero 2014, 20:11 pm
pues empezamos por lo primero Buenas Tardes!!

mi problema es que quiero realizar una consulta sql, dentro de un sentencia de control if y me manda error de compartibilidad de tipos,

Este es el error, lo demas funciona bien, incluso cambien la consulta por un metodo para validar cajas de texto y me corrio bien solo que debo de dar doble clic para que accese.

Código:
    if(tran.consultar(sqlStmt)){

la clase transaccion donde creo los metodos para relizar consultas
Código:
public class Transaccion {
private String query;
    private Statement stmt;
    public ResultSet res;
    private Connection conn = null;

     public Transaccion(Connection conn) {
        this.conn = conn;
        this.res = null;
        this.query = "";
        this.stmt = null;
    }

    public ResultSet getRes() {
        return res;
    }

    // realiza consultas sobre la base de datos
[color=red]    public void consultar(String query) {
        try {
            if (conn != null) {
                stmt = conn.createStatement();
                res = stmt.executeQuery(query);
            }
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }[/color]

    public void actualiza(String query) {
        try {
            if (conn != null) {
                stmt = conn.createStatement();
                stmt.executeUpdate(query);
            }
            }catch(SQLException e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }

       

     public void Desconectar(){
         try{
             res.close();
             stmt.close();
             conn.close();
         }catch(SQLException e){
             JOptionPane.showMessageDialog(null, e);
         }
     }

intento hacer una conexion a la base de datos para acceder a un Jdialog
Código:
    private void butaceptarActionPerformed(java.awt.event.ActionEvent evt) {                                           

        try {
            tran = new Transaccion(conn.getConn());
            conn.conectar();
        } catch (Exception ex) {
            Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        }

        String sqlStmt;
        // Verifico que esta intentando ingresar
        //preparo el query o la sentencia
        if (butaceptar.getText() == "aceptar") {
            // Prepara Variable para realizar el Query
            if (validarcajas()) {


                sqlStmt = "Select * from logeo";
                sqlStmt += " Where usuario='" + txtusuario.getText() + "'";
                sqlStmt += " And contraseña='" + String.valueOf(txtcontraseña.getPassword()) + "'";

                // Ejecuto la Consulta o query
                tran.consultar(sqlStmt);

                try {
                   [color=red][s]if(tran.consultar(sqlStmt))[/s][/color]{
                    //verifica que haya encontrado un registro
                    if (tran.getRes().next()) {

                        txtnombre.setText(tran.getRes().getString("nombre"));
                        txtrol.setText(tran.getRes().getString("rol"));

                        //Cambio el Texto del Boton
                        butaceptar.setText("Ingresar");
                        //Deshabilito Cancelar
                        butcancelar.setEnabled(false);
                    } else {
                        txtnombre.setText("Usuario y Cotraseña Incorrectos");
                        txtrol.setText("Intenta de Nuevo ...");
                    }
                    tran.Desconectar();
                    }
                   
                 
                } catch (RuntimeException e) {
                    // Mensaje de que no logrola conexion
                   
                } catch (com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException e) {
                    // Mensaje de que no logrola conexion
                    JOptionPane.showMessageDialog(null, e);
                } catch (SQLException ex) {
                    Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } else {
            // Bievenido
            JOptionPane.showMessageDialog(null, "Ingresando al Sistema");
            conn.Desconectar();

            BarraDeMenu ventana = new BarraDeMenu();
            ventana.show();
            dispose();
        }
    }           


Espero y sea entendible ya que es mi primer post' GRACIAS!!


Título: Re: problemas en consultas sql java
Publicado por: 1mpuls0 en 23 Enero 2014, 04:01 am
1. Bienvenido
2. Utiliza el geshi con la opcion de java

Citar
[ code=java ]
aqui tu codigo
[ /code ]

3. Compartibilidad??, no séra compatibilidad?
4. Haz un System.out.print(sqlStmt); copia y pegalo en tu consola de sql para ver si funciona.
5. Revisa que el tipo de datos y tamaño de tus campos en la base de datos sean los adecuados.


Título: Re: problemas en consultas sql java
Publicado por: miniricky en 23 Enero 2014, 04:42 am
bueno la sentencia es correcta, de hecho muestra los datos de la bd

el problema en si es como meter la consulta

Código:
public void consultar(String query) {
        try {
            if (conn != null) {
                stmt = conn.createStatement();
                res = stmt.executeQuery(query);
            }
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }

en la sentencia de control

Código:
if(tran.consultar(sqlStmt))

es hay donde me marca error de compatibilidad

una manera de solucionarlo seria pasando el metodo void a boolean pero necesitaria cambiar la estructura de la clase

lo que quiero es saber si hay alguna forma de evitar eso, algo como un parse


Título: Re: problemas en consultas sql java
Publicado por: 1mpuls0 en 24 Enero 2014, 00:27 am
Vienes de php o algo así' :P


una manera de solucionarlo seria pasando el metodo void a boolean pero necesitaria cambiar la estructura de la clase

pues sí eso...

otra manera es teniendo métodos para validar el resultado de tu consulta

public boolean esVacio
por ejemplo para revisar si tu consulta regresa resultados mediante un select count

un método para verificar si retorna un error utilizando un try catch

Código
  1. public boolean error(String query) {
  2.   boolean error = false;
  3.    try {
  4.        String query = "Select ....";
  5.        error = false;
  6.  
  7.    } catch (Exception e) { // si llega al catch significa que algo está mal con el query
  8.        System.err.println("Got an exception!");
  9.        System.err.println(e.getMessage());
  10.        error = true;
  11.    }
  12.    return error;
  13. }
  14.  

Espero te sirva de algo, saludos.