Problemas con Query
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.
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.
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
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
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 :-)
"select * from persona where rut=' "+rut+" 'and password=' "+password+" ' "
no lo olvidare nunca :-)
