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.
[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


0