Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Contare i record di una query

    Ho cercato un metodo che facesse questo ma non l'ho trovato. Su alcune mailing list mi dice di fare una query COUNT e poi recuperare i dati.
    Ho scritto questo codice:

    String cntQuery = "SELECT COUNT(id_fi) AS Totale FROM fiumi;";
    Statement stmt;
    ResultSet rs;
    int iTotalRows;

    stmt = conn.createStatement();
    rs = stmt.executeQuery(cntQuery);

    iTotalRows= rs.getInt("Totale");

    rs.close();
    stmt.close();
    Ma ho un errore sulla riga iTotalRows= rs.getInt("Totale"); che dice:

    java.sql.SQLException: Before start of result set at
    com.mysql.jdbc.Resultset.checkRowPos(ResultSet.jav a:687)
    com.mysql.jdbc.Resultset.getInt(ResultSet.java:228 7)
    com.mysql.jdbc.Resultset.getInt(ResultSet.java:240 1)
    at SensorView.main(SensorView.java:96) <== la riga della mia classe.

    Non sono tanto pratico d java e non capisco cosa sia successo. Sbaglio qualcosa nel contare le righe?
    Grazie a chi mi darā una mano!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    rs = stmt.executeQuery(cntQuery);
    rs.next();
    iTotalRows= rs.getInt("Totale");
    devi posizionarti alla prima riga per estrarre un valore

  3. #3
    Ok ora funziona! Anke se sinceramente mi lascia davvero perplesso questa cosa! Se si apre il recordset nn siamo giā alla prima riga?? mah! cmq grazie tante ! Non č che hai qualche dritta anche per l'altro problema x cui ho aperto un 3d? Grazie in anticipo!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    puoi fare
    codice:
    String query = "SELECT * FROM fiumi;"; 
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(query);
    rs.last();  // mi sposto alla fine
    int rows = rs.getRow();  // numero righe
    rs.beforeFirst();  // rimetto rs all'inizio
    while (rs.next()) { ...

  5. #5
    Originariamente inviato da Nunkij
    Ok ora funziona! Anke se sinceramente mi lascia davvero perplesso questa cosa! Se si apre il recordset nn siamo giā alla prima riga??
    no, all'apertura del recordset il cursore si posiziona prima della prima riga, per cui per cominciare a scorrere un recordset occorre fare sempre prima la next().
    Infatto al funzione rs.beforeFirst() rimette il cursore nella posizione iniziale

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.