2017-08-13 3 views
0

J'ai une base de données mysql avec une colonne appelée MemType cette colonne aura si un membre est actif. Tous les membres ne sont pas actifs. Je veux compter les membres actifs et afficher le résultat dans un textField. Je peux faire le compte mais je ne sais pas comment le résultat revient. Mon code folows:Je veux compter une colonne dans mysql et placer les résultats dans un champ de texte

@FXML 
private void CountActionPerformed(ActionEvent event) { 
    String user = "root"; 
    String password = ""; 

    String ResultSet = null; // This is to ensure that ResultSet is empty. 

    try { 
     Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/club", user, password); 
     System.out.println("Connection Successful "); 

     // Create statement. 
     Statement myStmt = myConn.createStatement();  

     ResultSet myRs = myStmt.executeQuery("SELECT COUNT(MemType)\n " 
      + "FROM members \n " 
      + "WHERE MemType = 'Active ' "); 

     while (myRs.next()) { 
      CountRel.setText(myRs.getString("MemType")); 
     } 
    } catch (Exception e) { 
    } 
} 

Répondre

0

Vous pouvez donner la colonne un alias comme ceci:

ResultSet myRs = myStmt.executeQuery("SELECT COUNT(MemType) as MemType " 
     + "FROM members " 
     + "WHERE MemType = 'Active ' "); 

Cela devrait être tous les changements dont vous avez besoin et vous aurez un seul résultat (le nombre de tous les Lignes actives)

0

Le résultat est une table avec une seule colonne et une seule ligne. Vous pouvez récupérer le résultat en utilisant l'index de la colonne:

try { 
    try (Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/club", user, password)) { 
     System.out.println("Connection Successful "); 

     // Create statement. 
     Statement myStmt = myConn.createStatement();  

     ResultSet myRs = myStmt.executeQuery("SELECT COUNT(*) " 
      + "FROM members " 
      + "WHERE MemType = 'Active '"); 

     if (myRs.next()) { 
      CountRel.setText(Integer.toString(myRs.getInt(1))); 
     } else { 
      throw new Exception("error while counting"); 
     } 

    } 
} catch (Exception e) { 
} 
+0

Merci d'avoir pris le temps de m'aider. J'ai joué avec l'esprit jusqu'à ce que j'ai eu la solution suivante: – birdog9999

+0

Désolé accidentellement frappé retour. – birdog9999

+0

Je ne sais pas pourquoi le point-virgule agit comme un retour. de toute façon voici ce que j'ai pour la solution while (myRs.next()) { CountRel.setText (myRs.getString (count "MemType")); – birdog9999