int skipResults, int maxResults, RowHandlerCallback callback) throws SQLException {
PropertiesHelper pHelper = PropertiesFactory.getPropertiesHelper(PropertiesFile.G4);
String jdbcMonitor = pHelper.getValue("jdbcMonitor", "0");
String dbString = "";
boolean flag = jdbcMonitor.equalsIgnoreCase("1") ? true : false;
ErrorContext errorContext = statementScope.getErrorContext();
errorContext.setActivity("executing query");
errorContext.setObjectId(sql);
PreparedStatement ps = null;
ResultSet rs = null;
setupResultObjectFactory(statementScope);
long time = 0;
if (flag) {
time = System.currentTimeMillis();
}
try {
if ((conn.getMetaData().getDatabaseProductName().toLowerCase().indexOf("ora") > -1)) {
// oracle分页
if (maxResults != -999999) {
sql = pageSqlOracle(sql, skipResults, maxResults);
}
skipResults = 0;
maxResults = -999999;
dbString = "oracle";
} else if (conn.getMetaData().getDatabaseProductName().toLowerCase().indexOf("mysql") > -1) {
// Mysql分页
if (maxResults != -999999) {
sql = pageSqlMysql(sql, skipResults, maxResults);
}
skipResults = 0;
maxResults = -999999;
dbString = "mysql";
} else if (conn.getMetaData().getDatabaseProductName().toLowerCase().indexOf("microsoft") > -1) {
// SQlServer采用iBatis机制分页
dbString = "sqlserver";
} else {
// others
}
if (log.isDebugEnabled()) {
outLog(sql, parameters, dbString, skipResults, maxResults);
}
errorContext.setMoreInfo("Check the SQL Statement (preparation failed).");
Integer rsType = statementScope.getStatement().getResultSetType();
if (rsType != null) {
ps = prepareStatement(statementScope.getSession(), conn, sql, rsType);
} else {
ps = prepareStatement(statementScope.getSession(), conn, sql);
}
setStatementTimeout(statementScope.getStatement(), ps);
Integer fetchSize = statementScope.getStatement().getFetchSize();
if (fetchSize != null) {
ps.setFetchSize(fetchSize.intValue());
}
errorContext.setMoreInfo("Check the parameters (set parameters failed).");
statementScope.getParameterMap().setParameters(statementScope, ps, parameters);
errorContext.setMoreInfo("Check the statement (query failed).");
ps.execute();
errorContext.setMoreInfo("Check the results (failed to retrieve results).");
// Begin ResultSet Handling
rs = handleMultipleResults(ps, statementScope, skipResults, maxResults, callback);
// End ResultSet Handling
if (flag) {