SoloCodigo

Programación General => Java => Mensaje iniciado por: turicuen en Jueves 5 de Junio de 2008, 19:45

Título: Problemas Al Recorrer Una Base De Datos
Publicado por: turicuen en Jueves 5 de Junio de 2008, 19:45
A las buenas, a ver si alguien me puede echar una mano, porque me estoy volviendo loco. Uso netbeans 6.0 y estoy trabajando con una base de datos de Access. Me conecta bien con la base de datos, me la muestra correctamente, pero cuando intento recorrerla me falla. Os pongo parte del código.


Código: Text
  1. // Así es como tengo declarado las var
  2. Connection con;
  3. Statement sent
  4. ResultSet result;
  5. String dir = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/base.mdb";  
  6.  
  7.  
  8. // Así establezco la conexión con la Base de datos
  9.  
  10. try {
  11.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  12.             con= DriverManager.getConnection(dir);
  13.             sent= con.createStatement();
  14.             result = sent.executeQuery("select * from tabla");
  15.             result.next();
  16.  } catch (Exception error) {
  17.                             }
  18.  
  19.  
  20. // hasta aquí todo correcto y no falla
  21. //Pero cuando quiero consultar el anterior. Falla
  22.  
  23. try {
  24.                result.previous();
  25.  
  26.  } catch (Exception error) {
  27.                             }
  28.  
  29.  
  30.  
  31.  
Es decir cuando hago un

Código: Text
  1. result.next();
  2.  
sin problemas, pero cuando quiero consultar el registro anterior me falla. Sabéis porque??? Por cierto si hago
o:
Código: Text
  1. resutl.first();
  2.  
también falla.


A ver si alguien sabe algo. Y GRACIAS de antemano.
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: manix en Jueves 5 de Junio de 2008, 19:54
Mira, a lo que estoy enterado, cuando llamas al result.next(); el cursor se establece detras del primera tupla pero no en la primara tupla en si, talvez puedaser un problema de posicionamiento donde te quieres devolver a una tupla que tupla que no existe


saludos
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: turicuen en Jueves 5 de Junio de 2008, 20:02
Lo primero gracias por responder tan rápidamente. Aunque creo que ese no es el problema. Solamente me permite usar el método next(), no me deja ni previous(), ni first().. nada. Creo que va a ser un problema con los drivers de la base de datos.
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: turicuen en Jueves 5 de Junio de 2008, 20:27
Porque hay alguna otra forma de Recorrer la base de datos?
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: manix en Jueves 5 de Junio de 2008, 22:15
No que yo sepa, para eso esta el resulset, ahora, por que no pones el error que te lanza??


saludos
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: turicuen en Viernes 6 de Junio de 2008, 00:06
A ver error exactamente no sale porque esta dentro de un try{} catch{}. Lo que pasa es que entra directamente en el catch{}.
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: turicuen en Viernes 6 de Junio de 2008, 23:04
Una cosa que se me ocurre es si mediante un arralist lo podria manejar. Es posible
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: manix en Viernes 6 de Junio de 2008, 23:09
Si, es posible....Mira lo que te aconsenjo es que si lo que quieres es recorrer los datos del resulset hagas:

Código: Text
  1.  
  2. ArrayList array = new ArrayList();
  3. result = sent.executeQuery("select * from tabla");
  4. while (result.next()){
  5.     // aca todo el codigo
  6.     array.add(resultSet.getString(resultSet.findColumn("nombre de columna"));  //se agrega un String
  7. }
  8.  
  9.  
si no sabes como obtener lo datos del resulset me dices


saludos
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: turicuen en Viernes 6 de Junio de 2008, 23:31
Muchas gracias lo probare esta noche. !!!
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: arielb en Viernes 6 de Junio de 2008, 23:37
Hola, para que el driver te permita navegar hacia atrás y adelante en un resultset debes pasarle unos parametros al createstament, por ejm

Código: Text
  1. stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
  2. rs = stmt.executeQuery(sql);
  3.  

además cuando vas a recorrer el resultset con next debes decirle que antes del pasar al siguiente registro debes llevar al primer registro. ejm

Código: Text
  1. rs.beforefirst();
  2. while(rs.next()){
  3.    System.out.println(rs.getString("CAMPO1"));
  4. }
  5.  
también puedes llevar el cursor a una posición exacta con la función absolute(int).

Código: Text
  1. rs.absolute(5);
  2. System.out.println(rs.getString("CAMPO1")); //imprime el registro en la posición 5
  3.  

Bueno espero te sirva este comentario.
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: SFRJ en Miércoles 11 de Junio de 2008, 10:40
PRUEBA ASI ALOMEJOR FUNCIONA


// Así es como tengo declarado las var
Connection con;
Statement sent
ResultSet result;
String dir = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/base.mdb";  


// Así establezco la conexión con la Base de datos

try {
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           con= DriverManager.getConnection(dir);
           sent= con.createStatement();
           result = sent.executeQuery("select * from tabla");
           result.next();
           //SI HASTA AKI HA FUNCIONADO FUNCIONARA Y LO SIGUIENTE
           result.previous();

} catch (Exception error) {
                           }
Título: Re: Problemas Al Recorrer Una Base De Datos
Publicado por: kurofire en Miércoles 18 de Junio de 2008, 13:59
En realidad muy bueno el soporte que da este foro los felicito.