A ver que pueden hacer con esto

steven
26 de Agosto del 2004
MAS ABAJO(METODO OBTENER_PREGUNTA) ESTA EL PROBLEMA

import java.sql.*;
import java.awt.*;
import java.applet.*;
import javax.swing.*;

public class Conexionc{

private String database,filename,direccion;//Variables para la conexion
Connection con;
Statement s;

public Conexionc(){
conectar();
}

//Metodo conexion a la BD
public void conectar(){
try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
filename = "C:/Steven/averque/Trivia/Trivia.mdb";//ruta para localizar la BD
database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}";
con = DriverManager.getConnection( database ,"","");
s = con.createStatement();//ResultSet.?
}

catch (Exception e) {
System.out.println("Error: " + e);
}
}

public String obtener_pregunta(String cad){//Insercion (sql)
String n1="";
try {
NO SE COMO PUEDO OBTENER DE LA BASE DE DATOS UN REGISTRO EN FORMA ALEATORIA, HICE LO SIGUIENTE
int ran;
ran = 1 + (int) ( Math.random() * 10 );
CAD ES UNA VARIABLE QUE PASA POR PARAMETRO Y TIENE EL NOMBRE DE LAS TABLAS DE LA B.D
s.execute("Select pregunta From "+cad);
SELECCIONA LA PREGUNTA DE LA B.D
ResultSet rs = s.getResultSet();
while ( rs.next() ){
while (rs.next()){
HE AQUI EL PROBLEMA
n1=rs.getString(1);
YO PONGO "n1=rs.getString(RAN);" PERO NO FUNCION COMO HAGO PARA QUE ME OBTENGA UN REGISTRO EN FORMA ALEATORIA DE LA B.D
}
}
catch (Exception e) {
System.out.println("Error: " + e);
}
return n1;
}

public void cerrar(){
try {
s.close(); // close the Statement to let the database know we're done with it
con.close();
}
catch (Exception e) {
System.out.println("Error: " + e);
}
}
}

Carlos
26 de Agosto del 2004
claro que no te funciona, el parametro que le pasas al getString debe ser el numero de la columna que le pusiste al select. Ademas haces while (rs.next) y luego otro while (rs.next), esto lo que hace es mover el puntero dos veces. Lo correcto seria if (rs!=null) para comprobar que te han llegado registros y luego while (rs.next()) para moverte al primer registro