获取受影响的行
问题描述:
我试图让这个查询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);
}
}
}
答
这是一个读操作,这样就不会影响任何行。如果你想获得行返回的数字,那么你可以做的一个低于
使用计数器变量,在环加一
while (rsBehav.next())
-
使用可滚动的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行会给你号或者返回行,
答
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会在每次循环运行时递增,这会给你结果集中的总行数。
答
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");
// ....
http://www.coderanch.com/t/303346/JDBC/databases/find-number-rows-resultset – Pshemo
甲选择不具有数受影响的行(==添加,更新或删除)。 –