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.
if(tran.consultar(sqlStmt)){
la clase transaccion donde creo los metodos para relizar consultas
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
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!!
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.
bueno la sentencia es correcta, de hecho muestra los datos de la bd
el problema en si es como meter la consulta
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
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
Vienes de php o algo así' :P
Cita de: miniricky en 23 Enero 2014, 04:42 AM
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
public boolean error(String query) {
boolean error = false;
try {
String query = "Select ....";
error = false;
} catch (Exception e) { // si llega al catch significa que algo está mal con el query
System.err.println("Got an exception!");
System.err.println(e.getMessage());
error = true;
}
return error;
}
Espero te sirva de algo, saludos.