Problemas con Query

Morrison
16 de Abril del 2004
Tengo un problema con el siguiente codigo:

import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;


/**
*
* @author Alvaro Flores
* @version 0.1
*/

public class Autoriza{

public static String url;
static Connection canal=null;
static Statement instruccion=null;
static ResultSet tabla=null;


public Autoriza() {
}

public static void validarPersona(String rut, String password){
String consulta="SELECT * FROM persona WHERE rut="+rut+"AND password="+password+"";
String rutAux=null;
String passwordAux=null;


abrirConexion();
try{
instruccion = canal.createStatement();
tabla=instruccion.executeQuery(consulta);
rutAux=tabla.getString("nombre");
passwordAux=tabla.getString("rut");
if(rutAux==rut){
if(passwordAux==password){
System.out.println(password+","+rut+","+passwordAux+","+rutAux+","+url);
}
else{
System.out.println(password+","+rut+","+passwordAux+","+rutAux+","+url);
}
}
else{
System.out.println(password+","+rut+","+passwordAux+","+rutAux+","+url);
}

}catch(SQLException e){}
cerrarConexion();
}


public static void abrirConexion(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
canal=DriverManager.getConnection("jdbc:odbc:bdcmi","", "");
instruccion=canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
}catch(java.lang.ClassNotFoundException e){}
catch(SQLException e){}
}

static void cerrarConexion(){
try{
canal.close();
}catch(SQLException e){}
}

public static void main(String[] args){
validarPersona("139935667","1234");

}


}

el asunto es que al entrar al metodo validarPersona y ejecutar la instruccion:
tabla=instruccion.executeQuery(consulta);
no sigue ejecutando lo que sigue y se salta directo a: cerrarConexion();
Ocupo NetBeans para hacer Debug y lo que les dije pasa cuando voy linea a linea ejecutanmdo cada instruccion.
Me despido esperando a algun solidario cibernauta.

Hargrafe
16 de Abril del 2004
Hola,

te salta a cerrarConexion() porque se produce una excepción,
en concreto, una SQLException que es capturada por su catch
correspondiente.

Normalmente si se produce una excepción en el método executeQuery()
es porque la consulta está mal construida.

En tu caso, revisando tu código puede ser que sea porque
no has dejado espacio en ...rut="+rut+"AND...,
creo que deberías poner ...rut="+rut"+" AND...

notas la diferencia?

venga, a ver si es eso

un Saludo

Morrison
16 de Abril del 2004
Gracias Hargrafe pero el error era que me faltaban comillas simples antes de rut y password

"select * from persona where rut=' "+rut+" 'and password=' "+password+" ' "

no lo olvidare nunca :-)

Morrison
16 de Abril del 2004
casi lo olvido ocupa una BD access con una tabla persona llamada bdcmi y campos rut y password