Beruflich Dokumente
Kultur Dokumente
http://www.forosdelweb.com/f45/contar-registros-resultset-207795/
Yo utilice Oracle express edition como SGBD y Java como lenguaje de desarrollo, las
librerias que use fueron ojdbc14.jar y ojdbc14_g.jar por estar trabajando con oracle (se
encuentran en la carperta donde queda instalado oracle), jstl.jar (se descarga desde
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi) y jsp-api.jar y
servlet-api.jar (se encuentran en la carpeta donde queda intalado el apache tomcat).
El cdigo es el siguiente:
import Connections.Conexion;
import java.sql.ResultSet;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
//Cierra la conexin
con.closeStatement();
Si el resultado devuelto no es un String sino otro tipo de dato como por ejemplo un double,
en el for se hace la conversion, quedaria entonces:
OTRA OPCIN
http://www.laneros.com/archive/index.php/t-77181.html
Eso no es posible en JDBC, y es inevitable por razones de rendimiento, pero para ayudarte
mejor con el inconveniente mejor comentanos porqu necesitassaber con antelacin la
cantidad de registros? ... igual puedes saberla al finalizar el recorrido de los resultados.
Muchas gracias don Rulas. Resulta que tengo un mtodo que recibe un parametro, con ese
parametro accede una tabla y devuelve todos los registros que cumplen la condicin en un
Array. Como usted muy bien sabe, en Java los arrays son estaticos, entonces debo
dimensionar el array antes de iniciar con la insercin de las posiciones.
Una solucin que me dieron fue utilizar Arraylist en vez del array, pero desconozco como
funciona.
Pues despues de que tenga el ResultSet puede crear una copia y ponerla iterar para saber
cuantos registros tiene, es decir:
for (int i=0; rset.next (); i++)
donde rset es el result set del la sentencia. en teoria le deberia quedar en i el numero de
registros. Es mejor que hacer el count sobre la base de datos.
salu2
Esa solucin me gusta ms que la que tengo actualmente ya que como dices, me evito un
acceso a la BD.
Gracias,
swoko
septiembre 13, 2006, 09:09
Un ArrayList es como un arreglo pero es dinmico, no necesitas decirle cuntos elementos
tiene al inicio, simplemente usas el mtodo add() y le agregas el objeto.
KERBEROS
septiembre 13, 2006, 09:28
Un ArrayList es como un arreglo pero es dinmico, no necesitas decirle cuntos elementos
tiene al inicio, simplemente usas el mtodo add() y le agregas el objeto.
Ejemplito!! ejemplito!!
Gracias,
Grissom.
septiembre 13, 2006, 09:43
Debes leer ms acerca de Collections en Java, eso es un tema bien extenso y con muchas
cosas por aprender: List, Set y Map son interfaces y tienen muchas implementaciones para
diferentes problemas, unas con soporte de acceso concurrente, otras sin soporte de acceso
concurrente pero ms eficientes ... unas usas algoritmos de lista enlazada, otras arrays
dinmicos, otras diccionarios de cdigo hash, otras .... no hermano ! ... es dificil dar una
respuesta si se ve de un punto de vista bien global ... es ms, puede usar una Collection para
posteriormente convertirla a Array y retornarla en el mtodo, hay ms de una forma de
hacerlo.
Finalmente, mientras aprende use la que sea, ArrayList puede ser, pero yo usara ArrayList
y retornara la interface List para ocultar detalles de implementacin (eso asumiendo que
ArrayList es el ms apropiado para este caso, y no Vector por ejemplo je je) ....
Este es el problema de los lenguajes robustos :( ... o para otros, son las ventajas y razn
para usarlos :D ...
Suerte.
KERBEROS
septiembre 13, 2006, 09:51
Debes leer ms acerca de Collections en Java, eso es un tema bien extenso y con muchas
cosas por aprender: List, Set y Map son interfaces y tienen muchas implementaciones para
diferentes problemas, unas con soporte de acceso concurrente, otras sin soporte de acceso
concurrente pero ms eficientes ... unas usas algoritmos de lista enlazada, otras arrays
dinmicos, otras diccionarios de cdigo hash, otras .... no hermano ! ... es dificil dar una
respuesta si se ve de un punto de vista bien global ... es ms, puede usar una Collection para
posteriormente convertirla a Array y retornarla en el mtodo, hay ms de una forma de
hacerlo.
Finalmente, mientras aprende use la que sea, ArrayList puede ser, pero yo usara ArrayList
y retornara la interface List para ocultar detalles de implementacin (eso asumiendo que
ArrayList es el ms apropiado para este caso, y no Vector por ejemplo je je) ....
Este es el problema de los lenguajes robustos :( ... o para otros, son las ventajas y razn
para usarlos :D ...
Suerte.
Todo muy claro don, Rulas, que no se diga ms, entonces a leer.
Muchas gracias a los que ayudaron en este foro.
criales
septiembre 13, 2006, 05:33
Que mas aca un ejemplito sobre como sacar los datos del select
List datos;
datos = new ArrayList();
while(rset.next())
{
datos.add(rset.getString (1));
}
int tam = datos.size();
String dato1 = (String)datos.get(tam-1);
Tiene que importar la libreria de ArrayList, adems recuerde que las listas guardan datos de
cualquier tipo o objetos, el tipico error es el cast el cual le indica de que tipo es el dato que
se va a sacar de la lista, le recomiendo que lea el API de java parasaber que metodos tiene
la clase.
suerte
Grissom.
septiembre 13, 2006, 08:59
En las versiones actuales de Java no es recomendable emplear java.lang.Object para las
Collections, ni otras clases, en lugar deberan usarse Generics:
List<String> datos;
datos = new ArrayList<String>();
while(rset.next())
{
datos.add(rset.getString (1));
}
int tam = datos.size();
String dato1 = (String)datos.get(tam-1); // XXX: ???
return datos;
jomunoz
septiembre 13, 2006, 09:45
Eso generics se parecen a los templates de C++.
karolanet333
diciembre 26, 2007, 02:31
Hola gente !!!!
Soy nueva en el foro ... pero quera comentarles que yo teniendo el mismo problema, lo que
hice fue instanciar el statement de la siguiente manera
stat = cnn.createStatement(ResultSet.TYPE_SCROLL_INSENSIT
IVE,ResultSet.CONCUR_READ_ONLY);
luego obtuve el numero de registros y volv el resultset antes del inicio tal como se abre
apenas lo inicializamos
//rowCount
while (rs.next())
rowCount++;
servidor="server1";
base="base1";
usuario="user1";
pass = "123";
puerto = "1433";
DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
cnn = DriverManager.getConnection("jdbc:microsoft:sqlserver://" + servidor + ":" + puerto
+ ";databaseName=" + base,usuario,pass);
if (cnn != null)
{
System.out.println();
System.out.println("Successfully connected");
System.out.println();
// Meta data
DatabaseMetaData meta = cnn.getMetaData();
System.out.println(propiedades);
try
{
//obtener datos de la base
stat = cnn.createStatement(ResultSet.TYPE_SCROLL_INSENSIT
IVE,ResultSet.CONCUR_READ_ONLY);
rs = stat.executeQuery(sql);
rsMeta = rs.getMetaData();
//colCount
colCount = rsMeta.getColumnCount();
//rowCount
while (rs.next())
rowCount++;
}catch(SQLException e)
{
e.printStackTrace();
}
return rpta;
}