2012-10-27 13 views
8

Ho provato diversi modi per ottenere il conteggio delle righe in JDBC java, nessun dado sembrava fornire il risultato corretto. C'è qualcosa di sbagliato che sto facendo?Modo corretto per trovare il conteggio delle righe in Java JDBC

Anche se la tabella del cliente è vuota e dovrei ottenere il conteggio delle righe come 0, non capisco perché ottengo un valore di conteggio delle righe diverso da zero.

Metodo 1 -

query = "SELECT * FROM customer WHERE username ='"+username+"'"; 
rs = stmt.executeQuery(query); 
ResultSetMetaData metaData = rs.getMetaData(); 
rowcount = metaData.getColumnCount(); 

Metodo 2 -

query = "SELECT * FROM customer WHERE username ='"+username+"'"; 
rs = stmt.executeQuery(query); 
rowcount = rs.last() ? rs.getRow() : 0; 
+4

È necessario eseguire un'istruzione 'COUNT':' String query = "SELECT COUNT (*) FROM customer WHERE username =?"; stmt.setString (1, username); rs = stmt.executeQuery (query); ' –

+3

Il metodo 1 ottiene il numero di colonne: perché pensi che funzioni? – Mark

risposta

13

Vedere questo frammento di codice:

import java.io.*; 
import java.sql.*; 

public class CountRows{ 
    public static void main(String[] args) { 
     System.out.println("Count number of rows in a specific table!"); 
     Connection con = null; 
     int count = 0; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctutorial","root","root"); 
      try { 
       Statement st = con.createStatement(); 
       BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
       System.out.println("Enter table name:"); 
       String table = bf.readLine(); 
       ResultSet res = st.executeQuery("SELECT COUNT(*) FROM "+table); 
       while (res.next()){ 
        count = res.getInt(1); 
       } 
       System.out.println("Number of row:"+count); 
      } 
      catch (SQLException s){ 
       System.out.println("SQL statement is not executed!"); 
      } 
     } 
     catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 
2

Quando si lavora con JDBC che non supporta TYPE_FORWARD_ONLY uso questo metodo per ottenere il conteggio delle righe.

Statement s = cd.createStatement(); 
ResultSet r = s.executeQuery("SELECT COUNT(*) AS rowcount FROM TableName"); 
r.next(); 
int count = r.getInt("rowcount"); 
r.close(); 
System.out.println("MyTable has " + count + " row(s)."); 

È possibile ottenere il conteggio delle righe utilizzando il metodo sopra.

Grazie ..

-1

Come nome del metodo specifica metaData.getColumnCount() restituirà numero totale di colonne nel set di risultati, ma non totale N. di righe (conteggio).

+0

Si dovrebbe anche fornire una soluzione alla domanda, cioè quale funzione può essere utilizzata per ottenere il conteggio delle righe – mynawaz

+0

Direi che "ottenere il conteggio delle righe" non può essere recuperato dai metadati poiché non è metadati ma dipende da dati "reali". – Krischu

2

questo il modo che uso per ottenere il conteggio delle righe in Java:

String query = "SELECT * FROM yourtable"; 

Statement st = sql.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
ResultSet = st.executeQuery(query); 

int rows = 0 
rs.last(); 
rows = rs.getRow(); 
rs.beforeFirst(); 

System.out.println("Your query have " + rows + " rows."; 

Spero che questo aiuto.

Saluti.

+0

Perché stai facendo rs.last() e rs.beforeFirst()? –

Problemi correlati