2013-07-06 4 views
1

Я хочу напечатать подсчет строк в конце, но он показывает 1!JDBC show rows count

public void showRecords() { 
    try { 
     Statement st1 = con.createStatement(); 
     ResultSet result1 = st1.executeQuery("select * from mytable"); 
     while (result1.next()) { 
      System.out.println(result1.getString(1) + " " + result1.getString(2)); 
     } 

     ResultSet rs1 = st1.executeQuery("select count(*) from mytable"); 
     int rows = rs1.last() ? rs1.getRow() : 0; 
     System.out.println("Number of rows is: "+ rows); //print 1 

    } catch (SQLException sqle) { 
     System.out.println("Can not excute sql statement"); 
     sqle.printStackTrace(); 
    } 
} 

Выход: ... Количество строк: 1

+0

Почему вы просто не сосчитать число итераций 'while'-цикла? –

+0

@MarkRotteveel, может быть, я не знаю, как, вы можете показать нам? – Sajad

ответ

2

Выход: ... Количество строк: 1

Это абсолютно правильно, потому что Ouput графского запроса как

select count(*) from mytable 

будет содержать только один строка, содержащая общее количество строк. Чтобы вы теперь извлекли этот счет, вы должны использовать методы getterкак обычно.

int rows = rs1.getInt(1); 

Чтобы получить счет так, как вам хотелось; использовать тот же подход, с первым запросом

ResultSet result1 = st1.executeQuery("select * from mytable"); 
int rows = result1.last() ? result1.getRow() : 0; 
System.out.println("Number of rows is: "+ rows); // should print the count 
1

Выбор счетчика из RecoredSet всегда возвращает значение 1, то есть записи, содержащий результат запроса. Вы хотите

ResultSet rs1 = st1.executeQuery("select count(*) from mytable"); 
if (rs1.next()) { 
    int rows = rs1.getInt("COUNT") 
} 
1

Вы должны прочитать значение из запроса строки, так как это обычный запрос. Как

rows = rs1.getInt(1); 
1

Граф (*) не имеет имя столбца (или только «сгенерированный» тот, который вы можете не знать). Поэтому вам нужно получить значение по индексу столбца.

Кроме того, вы должны вызвать следующий() на ResultSet для того, чтобы иметь возможность получить значение:

ResultSet rs1 = st1.executeQuery("select count(*) from mytable"); 
int rows = 0; 
if (rs1.next() { 
    rows = rs1.getInt(1); 
} 
System.out.println("Number of rows is: "+ rows); //print 1