web-dev-qa-db-fra.com

Comment accéder à la valeur d'une requête SQL count () dans un programme Java

Je veux arriver à la valeur que je trouve en utilisant la commande COUNT de SQL. Normalement, j'entre le nom de colonne auquel je souhaite accéder dans la méthode getInt () getString (). Que dois-je faire dans ce cas lorsqu'il n'y a pas de nom de colonne spécifique.

J'ai utilisé 'AS' de la même manière que pour aliaser une table, je ne suis pas sûr que cela va fonctionner, je pense que non.

Statement stmt3 = con.createStatement();
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count");
    while(rs3.next()){
    count = rs3.getInt("count");
    }
49
Ankur

Utilisez des alias:

SELECT COUNT(*) AS total FROM ..

et alors

rs3.getInt("total")
82
Bozho

Les réponses fournies par Bohzo et Brabster fonctionneront évidemment, mais vous pouvez aussi simplement utiliser: 

rs3.getInt(1);

pour obtenir la valeur dans la première, et dans votre cas, seule la colonne.

42

Je m'attendrais à ce que cette requête fonctionne avec votre programme:

"SELECT COUNT(*) AS count FROM "+lastTempTable+")"

(Vous devez aliaser la colonne, pas la table)

4
brabster

Je l'ai fait de cette façon (exemple):

String query="SELECT count(t1.id) from t1, t2 where t1.id=t2.id and t2.email='"[email protected]"'";
int count=0;
try {
    ResultSet rs = DatabaseService.statementDataBase().executeQuery(query);
    while(rs.next())
        count=rs.getInt(1);
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    //...
}
2
andrew
        <%
        try{
            Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bala","bala","bala");
            if(con == null) System.out.print("not connected");
            Statement st = con.createStatement();
            String myStatement = "select count(*) as total from locations";
            ResultSet rs = st.executeQuery(myStatement);
            int num = 0;
            while(rs.next()){
                num = (rs.getInt(1));
            }

        }
        catch(Exception e){
            System.out.println(e);  
        }

        %>
1
BalajiShanmugam
Statement stmt3 = con.createStatement();

ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) AS count FROM "+lastTempTable+" ;");

count = rs3.getInt("count");
1
geek

C'est semblable à ci-dessus mais vous pouvez essayer comme

public Integer count(String tableName) throws CrateException {
        String query = String.format("Select count(*) as size from %s", tableName);
        try (Statement s = connection.createStatement()) {
            try (ResultSet resultSet = queryExecutor.executeQuery(s, query)) {
                Preconditions.checkArgument(resultSet.next(), "Result set is empty");
                return resultSet.getInt("size");
            }
        } catch (SQLException e) {
            throw new CrateException(e);
        }
    }
}
0
Dhruv Pal