Java - Estado del cursor no válido, problema con jdbc

 
Vista:

Estado del cursor no válido, problema con jdbc

Publicado por Jorge (2 intervenciones) el 27/06/2007 17:56:47
Estoy realizando un aplicación en Java con NetBeans, utilizando una base de datos de Access. A la hora de recuperar un registro se me lanza la excepción:

[Microsoft][Administrador de controladores ODBC] Estado del cursor no válido

En cambio, cuando inserto funciona correctamente. He probado un montón de cosas y no consigo dar con la solución, a ver si alguien me puede echar un cable. El código es el siguiente:

import java.sql.*;


public class frmGestionPisos extends javax.swing.JFrame {

String urlBD = "jdbc:odbc:Inmuebles";
Statement sentencia;
Connection conexion;
ResultSet resultado;


/** Creates new form frmGestionPisos */
public frmGestionPisos() {
initComponents();
try{
// Cargamos el puente JDBC=>ODBC
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");}
catch (ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"No se pudo cargar el contenido JDBC-ODBC","Información",JOptionPane.ERROR_MESSAGE);
}

private void btnConsultarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO: Agrege su codigo aqui:

String clave;
conexion=null;
clave=txtClave.getText();
try{

conexion = DriverManager.getConnection("jdbc:odbc:Inmuebles");
sentencia = conexion.createStatement();
resultado = sentencia.executeQuery("SELECT * FROM TPISO WHERE CLAVEPISO LIKE 'clave'");
txtClave.setText(resultado.getString("CLAVEPISO"));
txtDireccion.setText(resultado.getString("DIRECCION"));
txtNumero.setText(resultado.getString("NUMERO"));
txtCodigoPostal.setText(resultado.getString("CP"));
txtPlanta.setText(resultado.getString("PLANTA"));
txtLetra.setText(resultado.getString("LETRA"));
resultado.close();
sentencia.close();
conexion.close();

}catch (SQLException e){
System.out.println( "Error: SQLException--> " + e.getMessage() );
}

}


private void btnAltaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO: Agrege su codigo aqui:
Integer numero,cp;
String clave,direccion,planta;
String letra;

// obtenemos el contenido de las cajas de texto.
clave=txtClave.getText();
numero=Integer.parseInt(txtNumero.getText());
cp=Integer.parseInt(txtCodigoPostal.getText());
direccion=(String)txtDireccion.getText();
planta=(String)txtPlanta.getText();
letra = (String)txtLetra.getText();

//lo metemos en el registro de la BBDD
try{
conexion=DriverManager.getConnection("jdbc:odbc:Inmuebles");
sentencia=conexion.createStatement();
sentencia.executeUpdate("INSERT INTO TPISO"+
" VALUES ('"+txtClave.getText()+"',"+
"'"+txtDireccion.getText()+"',"+
"'"+txtNumero.getText()+"',"+
"'"+txtCodigoPostal.getText()+"',"+
"'"+txtPlanta.getText()+"',"+
"'"+txtLetra.getText()+"')");
conexion.close();
}
catch(SQLException e){}


}
}

Un saludo, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Porque no encuentra nada

Publicado por Gonzalo (180 intervenciones) el 27/06/2007 18:17:04
Y no encuentra nada porque esto:
resultado = sentencia.executeQuery("SELECT * FROM TPISO WHERE CLAVEPISO LIKE 'clave'");
debería ser esto:
resultado = sentencia.executeQuery("SELECT * FROM TPISO WHERE CLAVEPISO LIKE '"+clave+"'");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque no encuentra nada

Publicado por Jorge (2 intervenciones) el 27/06/2007 18:32:20
Ok, muchas gracias. Se ha arreglado, pero ahora me aparece este otro error.

[Microsoft][Administrador de controladores ODBC] Pocos parametros. Se esperaba 1.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Estado del cursor no válido, problema con jdbc

Publicado por Armando (6 intervenciones) el 28/06/2007 01:12:08
Mira realmente no encuentro el por que pudiera enviarte esa excepcion, yo realize una consulta muy similar solo agrego un while() para leer el cdr, que es mi ResultSet y mi consultacliente2, hace el query a la base de datos, de ahi en fuera parece lo mismo ojala te sirva.

try{
cdr=link.consultacliente2(String.valueOf(cbcl_clientes.getSelectedItem()));

while(cdr.next()){
tfcl_clave.setText(cdr.getString(1));
tfcl_cliente.setText(cdr.getString(2));
tfcl_rfc.setText(cdr.getString(3));
tfcl_dir.setText(cdr.getString(4));
tfcl_contacto.setText(cdr.getString(5));
tfcl_telefono.setText(cdr.getString(6));
}
}
catch(Exception e){
System.out.println("Error en la consulta");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Estado del cursor no válido, problema con jdbc

Publicado por Javier (1 intervención) el 02/07/2007 05:38:01
Lo que pasa es que el cursor está al inicio, es decir apuntando a ningun registro. Tendrias que moverlo al primer registro usando :

resultado.next();

devuelve true si logro moverse al registro siguiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Estado del cursor no válido, problema con jdbc

Publicado por ivan (1 intervención) el 16/08/2012 13:46:31
la primera fila no contiene ningun registro porque es la que indica el comienzo del fichero,
al igual que la ultima.

La fila BOF significa “comienzo de fichero” y representa una fila anterior al primer registro del ResultSet.

La fila EOF significa “final de fichero” y representa una fila posterior al último registro del ResultSet.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar