如何在Java程序中访问SQL count()查询的值

如何在Java程序中访问SQL count()查询的值,java,sql,jdbc,count,Java,Sql,Jdbc,Count,我想使用SQL的COUNT命令获得我正在查找的值。通常,我在getInt()getString()方法中输入要访问的列名,在这种情况下,如果没有特定的列名,我该怎么办 我使用“AS”的方式与使用别名表的方式相同,我不确定这是否有效,我想不会 Statement stmt3 = con.createStatement(); ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count");

我想使用SQL的COUNT命令获得我正在查找的值。通常,我在getInt()getString()方法中输入要访问的列名,在这种情况下,如果没有特定的列名,我该怎么办

我使用“AS”的方式与使用别名表的方式相同,我不确定这是否有效,我想不会

Statement stmt3 = con.createStatement();
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count");
    while(rs3.next()){
    count = rs3.getInt("count");
    }
使用别名:

SELECT COUNT(*) AS total FROM ..
然后

rs3.getInt("total")

我希望此查询与您的程序配合使用:

“从“+lastTestable+”中选择COUNT(*)作为计数”

(您需要为列别名,而不是表别名)

和提供的答案显然有效,但您也可以使用:

rs3.getInt(1);
要获取第一列中的值,在您的情况下,仅获取列。

我是这样做的(示例):


它与上面的类似,但您可以像这样尝试

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);
        }
    }
}


From Javadoc:“可以使用列的索引号或列的名称检索值。一般来说,使用列索引会更有效。”这种级别的性能调整对于大多数应用程序来说并不重要。使用列索引会使您暴露在SQL查询中移动的列所导致的错误中,这可能很难跟踪。在这个特定的示例中(仅获取记录计数),这不是一个问题,但为了应用程序的可持续性,需要记住这一点。@PederRicer非常同意。太多的时候人们关注于微观优化,当清晰性应该(几乎总是)成为代码的主要目标时至少从我的角度来看,需要先调用rs3.next()然后再调用rs3.getInt(“总计”)谢谢,我有一些问题要问你,我们可以聊聊吗?请确实需要调用rs3.next()(在getInt()之前)。否则,它将抛出SQLException java.sql.SQLException:ResultSet.next未被调用您需要调用next()方法来启动结果集。e、 g.while(recSet.next(){num=recSet.getInt(“…”);}我做了同样的事情,但是我得到了NullPointerException(),你能帮忙吗?欢迎来到堆栈溢出!请不要只回答源代码。试着提供一个关于你的解决方案如何工作的很好的描述。请参阅:。谢谢
Statement stmt3 = con.createStatement();

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

count = rs3.getInt("count");
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);
        }
    }
}
        <%
        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);  
        }

        %>