2015-06-21 3 views
0

Я пытаюсь получить число затронутых записей этого запроса SELECT mac, stop_name from behaviour where mac = ? с использованием executeQuery. Как я могу получить количество затронутых строк?Получить число поврежденных строк

Код:

if (behaviourExist.next()) { 
    PreparedStatement prepared = con 
      .prepareStatement("SELECT mac, stop_name from behaviour where mac = ?"); 
    prepared.setString(1, macD); 
    ResultSet rsBehav = prepared.executeQuery(); 
    ArrayList<String> stopNameList = new ArrayList<String>(); 
    while (rsBehav.next()) { 
     //int numberOfRows = rsBehav.getInt(1); 
     String stNa = rsBehav.getString("stop_name"); 
     if (stNa.equals(nameShortestDistance)) { 
      stopNameList.add(stNa); 

     } 

    } 
} 
+0

http://www.coderanch.com/t/303346/JDBC/databases/find-number-rows-resultset – Pshemo

+0

A Выбор не имеет ряд затронутых строк (== добавил, обновление или удален). –

ответ

1

Это операция чтения, поэтому он не будет влиять на любую строку. Если вы хотите, чтобы получить номер строки возвращаемые, то вы можете сделать одно из ниже

  1. Используйте переменную-счетчик и увеличить его в петле while (rsBehav.next())

  2. Используйте прокручивать ResultSet

    PreparedStatement prepared = con.prepareStatement(
         "SELECT mac, stop_name from behaviour where mac = ?", 
         ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
    ResultSet rsBehav = prepared.executeQuery(); 
    rsBehav.afterLast(); 
    int numRow = rsBehav.getRow(); 
    rsBehav.beforeFirst(); 
    

Здесь numRow даст вам номер или возвращаемая строка,

0
if (behaviourExist.next()) { 
PreparedStatement prepared = con 
     .prepareStatement("SELECT mac, stop_name from behaviour where mac = ?"); 
prepared.setString(1, macD); 
ResultSet rsBehav = prepared.executeQuery(); 
ArrayList<String> stopNameList = new ArrayList<String>(); 
int numberOfRows = 0; 
while (rsBehav.next()) { 
    ++numberOfRows; 
    String stNa = rsBehav.getString("stop_name"); 
    if (stNa.equals(nameShortestDistance)) { 
     stopNameList.add(stNa); 

    } 
} 
} 

Здесь переменная numberOfRows будет увеличиваться при каждом запуске цикла, что даст вам общее количество строк в результирующем наборе.

0
PreparedStatement prepared = con 
     .prepareStatement(
     "SELECT (SELECT count(*) from where mac = ?)," 
     " mac, stop_name from behaviour where mac = ?"); 
prepared.setString(1, macD); 
prepared.setString(2, macD); 
ResultSet rsBehav = prepared.executeQuery(); 
ArrayList<String> stopNameList = new ArrayList<String>(); 
while (rsBehav.next()) { 
    int numberOfRows = rsBehav.getInt(1); 
    String stNa = rsBehav.getString("stop_name"); 
    // ....