2016-01-03 7 views
0

Я пытаюсь найти john в name столбец в базе данных, но я не могу.Как я могу получить количество элементов результата в sql db?

То, что я пытаюсь выглядит следующим образом:

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

ответ

0

Вы пытаетесь проверить, если ResultSet объект равен john строки - OFC это всегда 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 метода - Я думаю, что это более уместно в вашем случае. Не забудьте закрыть ResultSet, Statement и Connection в finally заблокировать или использовать try-with-resources.

Но если вы хотите посчитать Джонса в своем столе, то лучше просто использовать SELECT COUNT(*) FROM mytable WHERE name = 'john'. Обратите внимание, что это условие зависит от регистра в запросе.

+0

Большое спасибо ... –

0
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)); 
+0

Большое спасибо ... –

0

Используйте следующий код:

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

Большое спасибо ... –

0

Вам нужно пройти через каждый ряд с

while (rs.next) {.... 

И вы должны получить значение, чтобы сравнить, как этот

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

Другой вариант заключается изменить задание, чтобы сделать подсчет это более эффективно.

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

Следует rs.getString (1), если вы заинтересованы в получении первого столбца. –

+0

Большое спасибо ... –

+0

Без проблем, если вам нравится, проголосуйте за него :) –

1

Еще один способ ....

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); 
Смежные вопросы