如何在 sql db 中获取结果项数?

How can I get result item count in sql db?

我试图在数据库的 name 列中找到 john,但我找不到。

我正在尝试的是:

String st="SELECT name FROM mytable";
ResultSet rs = stmt.executeQuery(st);
int icount = 0 ;
if (rs.equals("john")) {
    while (rs.next()) { 
        icount++;
    }
}
jtext1.setText(String.valueOf(icount));
String st="SELECT name FROM mytable";
ResultSet rs = stmt.executeQuery(st);
int icount = 0 ;
while (rs.next()) { 
    if (rs.getString("name").equals("john")) {
        icount++;
    }
}
jtext1.setText(String.valueOf(icount));

使用以下代码:

while(rs.next()){
    String name = rs.getString("name");
    if("john".equals(name))
        icount++;
}
jtext1.setText(String.valueOf(icount));

您正在尝试检查 ResultSet 对象是否等于 john 字符串 - 当然它总是 false。你需要这样的东西:

String query = "SELECT name FROM mytable";
ResultSet rs = stmt.executeQuery(query);
int johnCount = 0;
while (rs.next()) {
    String name = rs.getString("name");
    if ("john".equalsIgnoreCase(name)) {
        johnCount++;
    }
}

注意 equalsIgnoreCase 方法 - 我认为它更适合您的情况。不要忘记在 finally 块中关闭 ResultSetStatementConnection 或使用 try-with-resources.

但如果您想在 table 中算上 Johns,最好只使用 SELECT COUNT(*) FROM mytable WHERE name = 'john'。请注意,这是查询中的 case-sensitive 条件。

您需要用

遍历每一行
while (rs.next) {....

你需要把值拿出来像这样比较

String name = rs.getString(1);
If (name.equals("john")) {....

另一种选择是更改任务以进行计数,这样效率更高。

select count(name) from myTable where name = 'john';

另一种方式....

int count = 0;
String query = "SELECT COUNT(DISTINCT name) AS rCount FROM myTable "
             + "WHERE UPPER(name) LIKE UPPER('JOHN');" 
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) { count = rs.getInt("rCount"); }
System.out.println(count);