二者的区别在于前者对于修改不敏感,而后者对于修改敏感
resultSetConcurency是设置ResultSet对象能够修改的,取值如下:
ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。
ResultSet.CONCUR_UPDATABLE 设置为可修改类型的参数。
以下两种方法的共性:返回可滚动的结果集,当数据库变化时,当前结果集同步改变。
不可用结果集更新数据库:
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
可用结果集直接更新数据库:
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATETABLE);
result的使用:
public Result executeQuery() throws SQLException {
Result result = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
Statement stmt = null;
try {
if (values != null && values.size() > 0) {
// Use a PreparedStatement and set all values
pstmt = conn.prepareStatement(sqlValue); //SQL语句
setValues(pstmt, values); //为参数赋值,是一个数组
rs = pstmt.executeQuery();
}
else {
// Use a regular Statement
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlValue);
}
result = ResultSupport.toResult(rs);
}finally {
if (rs != null) {
try {rs.close();} catch (SQLException e) {}
}
if (stmt != null) {
try {stmt.close();} catch (SQLException e) {}
}
if (pstmt != null) {
try {pstmt.close();} catch (SQLException e) {}
}
}
return result;
}
下面是遍列Result的代码
Result result = sqlCommandBean.executeQuery();
if (result == null || result.getRowCount() == 0) {
// Book not found
System.out.println("没有结果!!!");
} else {
System.out.println("有" + result.getRowCount() + "条记录!!!");
for(int i=0;i<result.getRowCount();i++){
Map map=result.getRows()[i]; //每次循环定位到一条记录
System.out.println(map.get("字段1")+" "+map.get("字段2"));
}
}