我想在mysql中计算一列,并将结果放在一个文本框中

问题描述:

我有一个名为MemType的列的mysql数据库,这一列将显示一个成员是否处于活动状态。并非所有成员都活跃。我想统计活动成员并将结果显示在textField中。我可以做点数,但不知道结果如何回来。我的代码folows:我想在mysql中计算一列,并将结果放在一个文本框中

@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) { 
    } 
} 

,您可以给列一个这样的别名:

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

这应该是你所需要的所有更改,你将只有一个结果(所有计数有效行)

结果是一个单列和单行的表。您可以使用列索引检索结果:

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

谢谢你们抽出时间帮助我。我玩了机智,直到我得到以下解决方案: – birdog9999

+0

对不起意外打回报。 – birdog9999

+0

不知道为什么分号就像返回一样。无论如何,这里是我得到的解决方案,而(myRs.next())CountRel.setText(myRs.getString(count“MemType”)); – birdog9999