部分源代码如下:说明已经关闭资源了。
public int update(String sql, Object... params) throws SQLException {
Connection conn = this.prepareConnection();
return this.update(conn, true, sql, params);
}
/**
* Calls update after checking the parameters to ensure nothing is null.
* @param conn The connection to use for the update call.
* @param closeConn True if the connection should be closed, false otherwise.
* @param sql The SQL statement to execute.
* @param params An array of update replacement parameters. Each row in
* this array is one set of update replacement values.
* @return The number of rows updated.
* @throws SQLException If there are database or parameter errors.
*/
private int update(Connection conn, boolean closeConn, String sql, Object... params) throws SQLException {
if (conn == null) {
throw new SQLException("Null connection");
}
if (sql == null) {
if (closeConn) {
close(conn);
}
throw new SQLException("Null SQL statement");
}
PreparedStatement stmt = null;
int rows = 0;
try {
stmt = this.prepareStatement(conn, sql);
this.fillStatement(stmt, params);
rows = stmt.executeUpdate();
} catch (SQLException e) {
this.rethrow(e, sql, params);
} finally {
close(stmt);
if (closeConn) {
close(conn);
}
}
return rows;
}
} DBUtils框架提供的结果处理器例子:
public class ResultSetHandlerDemo {
private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
//ArrayHandler:把结果集中的第一行数据转成对象数组。
@Test
public void test1() throws SQLException{
//数组中的元素就是记录的每列的值
Object[] objs = qr.query("select * from account where id= ", new ArrayHandler(), 1);
for(Object obj:objs)
System.out.println(obj);
}
//ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
@Test
public void test2() throws SQLException{
//数组中的元素就是记录的每列的值
List