Вы можете сделать ваши 4 запроса, 2 запроса с некоторыми параметрами и извлечь два вспомогательных метода, чтобы сделать их более СУХИМЫМИ, но в целом, чтобы сделать ваш код более надежным и читаемым, потому что вы объявляете слишком много переменных, которые к тому же имеют слишком широкую область действия.
Вы могли бы написать что-то вроде:
public int executeMinnvsAtPQuery(String MinnvsAtP){
String query = "SELECT SUM(MinnvsAt) FROM nfl.minnesota WHERE MinnvsAtP = ?";
PreparedStatement stmt = conn[1].prepareStatement(minnvsAtPQuery);
stmt.setString(1, MinnvsAtP);
ResultSet rs = stmt.executeQuery();
rs.next();
return rs.getInt(1);
}
public int executeAtvsMinnQuery(String AtvsMinn){
String query = "SELECT SUM(AtvsMinn) FROM nfl.minnesota WHERE MinnvsAtP = ?";
PreparedStatement stmt = conn[1].prepareStatement(minnvsAtPQuery);
stmt.setString(1, AtvsMinn);
ResultSet rs = stmt.executeQuery();
rs.next();
return rs.getInt(1);
}
И использовать их следующим образом:
int SUMPointsAH = executeMinnvsAtPQuery("TRUE");
int SUMPointsAA = executeMinnvsAtPQuery("FALSE");
int SUMPointsBH = executeAtvsMinnQuery("TRUE");
int SUMPointsBA = executeAtvsMinnQuery("FALSE");
Обратите внимание, что даже если два запроса очень близки, я не думаю, чтовы можете сделать sum(...)
агрегатным параметром, ценным PreparedStatement
.
И я бы не рекомендовал объединять части SQL, которые подвержены ошибкам и небезопасны.
Мой проект содержит этот раздел 32x.
Чтобы уменьшить этот раздел до 1X, вы можете следовать той же логике и извлечь набор этих запросов в метод с некоторымипараметры, которые вы можете вызвать в любом месте тогда.
Также обратите внимание, что выполнение запросов может иметь стоимость с точки зрения времени выполнения.Поэтому вы также должны убедиться, что ваши запросы оптимизированы и необходимы.