2015-06-21 116 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

甲选择不具有数受影响的行(==添加,更新或删除)。 –

回答

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"); 
    // ....