2012-10-27 19 views
8

Ich habe verschiedene Möglichkeiten ausprobiert, um die Zeilenanzahl in Java JDBC zu bekommen, Nuss schien keiner das richtige Ergebnis zu geben. Ist etwas falsch, dass ich mache?Richtiger Weg, um rowcount in Java zu finden JDBC

Obwohl die Tabelle customer leer ist und ich die rowcount als 0 erhalten sollte, verstehe ich nicht, warum ich einen non-counter nowcount-Wert bekomme.

Methode 1 -

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

Methode 2 -

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

Sie sollten eine 'COUNT' Anweisung ausführen:' String query = "SELECT COUNT (*) FROM Kunde WHERE username =?"; stmt.setString (1, Benutzername); rs = stmt.executeQuery (query); ' –

+3

Methode 1 erhält die Anzahl der Spalten - warum denkst du, dass das funktionieren könnte? – Mark

Antwort

13

diesen Code-Snippet Siehe:

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

Wenn Sie mit JDBC arbeiten, die nicht TYPE_FORWARD_ONLY Nutzung unterstützt diese Methode, um rowcount zu erhalten.

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)."); 

Sie können die Anzahl der Zeilen mit der obigen Methode ermitteln.

Dank ..

-1

Als Methodenname gibt metaData.getColumnCount() Gesamtzahl der Spalten in Ergebnismenge zurück, aber nicht nicht von Zeilen (count) betragen.

+0

Sie sollten auch eine Lösung für die Frage, d. H. Welche Funktion kann verwendet werden, um Zeilenanzahl – mynawaz

+0

Ich würde sagen, "Anzahl Zeilen abrufen" kann nicht aus MetaData abgerufen werden, da es nicht Metadata ist aber von "echten" Daten abhängt. – Krischu

2

Dies ist die Art, wie ich verwenden, um die Zeilenanzahl in Java zu erhalten:

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."; 

ich diese Hilfe Sie hoffen.

Grüße.

+0

Warum machst du rs.last() und rs.beforeFirst()? –

Verwandte Themen