public SortedMap<String, TreeMap<String, String>> getCampo(String city, String sport, String
data) throws SQLException {
TreeMap<String, TreeMap<String, String>> campoInfo = new TreeMap<>();
Connection connection =null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
statement = connection.createStatement();
String query = String.format("SELECT * FROM CAMPO WHERE COMUNE='%s' AND SPORT='%s' AND DATA >= '%s' AND TORNEO = 0", city, sport, data);
resultSet = statement.executeQuery(query);
while (resultSet.next()) {
String name = resultSet.getString("NOME");
String id = "" + resultSet.getInt("ID");
String comune = resultSet.getString("COMUNE");
String indirizzo = resultSet.getString("INDIRIZZO");
String desc = resultSet.getString("DESCRIZIONE");
String renter = "" + resultSet.getInt("RENTER");
String date = resultSet.getString("DATA");
String ora = resultSet.getString("ORA");
String metodo = resultSet.getString("METODODIPAGAMENTO");
String prezzo = resultSet.getString("PREZZO");
String isAffittabile = "" + resultSet.getString("AFFITTABILE");
TreeMap<String, String> info = new TreeMap<>();
info.put("ID", id);
info.put("COMUNE", comune);
info.put("INDIRIZZO", indirizzo);
info.put("DESC", desc);
info.put("RENTER", renter);
info.put("DATA", date);
info.put("ORA", ora);
info.put("PREZZO", prezzo);
info.put("METODODIPAGAMENTO", metodo);
info.put("AFFITTABILE", isAffittabile);
campoInfo.put(name, info);
}
}
catch (Exception e) {
// TODO: handle exception
}
finally {
if (resultSet!=null) {
resultSet.close();
}
if (statement!=null) {
statement.close();
}
}
if (connection!=null){
connection.close();}
return campoInfo;
}
我正在用Java编写这个函数,使用Sonar scanner。我对变量“statement”和“resultSet”有问题,因为当我试图在finally块中关闭它们时,Sonar告诉我有一个bug,请使用try with resources或在finally块中关闭它。这只发生在这些变量中的一个,块中的第二个。例如,首先我关闭“结果集”(这没问题),但第二个没有关闭,Sonar将其高亮显示。我能做什么?
可以在try(){}块中初始化多个变量:
public SortedMap<String, TreeMap<String, String>> getCampo(String city, String sport, String data) throws SQLException {
TreeMap<String, TreeMap<String, String>> campoInfo = new TreeMap<>();
String query = String.format("SELECT * FROM CAMPO WHERE COMUNE='%s' AND SPORT='%s' AND DATA >= '%s' AND TORNEO = 0", city, sport, data);
try (Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
String name = resultSet.getString("NOME");
String id = "" + resultSet.getInt("ID");
String comune = resultSet.getString("COMUNE");
String indirizzo = resultSet.getString("INDIRIZZO");
String desc = resultSet.getString("DESCRIZIONE");
String renter = "" + resultSet.getInt("RENTER");
String date = resultSet.getString("DATA");
String ora = resultSet.getString("ORA");
String metodo = resultSet.getString("METODODIPAGAMENTO");
String prezzo = resultSet.getString("PREZZO");
String isAffittabile = "" + resultSet.getString("AFFITTABILE");
TreeMap<String, String> info = new TreeMap<>();
info.put("ID", id);
info.put("COMUNE", comune);
info.put("INDIRIZZO", indirizzo);
info.put("DESC", desc);
info.put("RENTER", renter);
info.put("DATA", date);
info.put("ORA", ora);
info.put("PREZZO", prezzo);
info.put("METODODIPAGAMENTO", metodo);
info.put("AFFITTABILE", isAffittabile);
campoInfo.put(name, info);
}
} catch (Exception e) {
// TODO: handle exception
}
return campoInfo;
}
我在这里看到的另一个问题是,您应该真正使用准备好的语句(而不是String.format
)来构建查询
我的程序假设在用户输入整数时向随机数组添加10,随机数组将显示,并在第一个数组下向它们添加10,如果用户不输入int值,则try catch语句将捕捉显示错误消息的错误,因此我要做的是在try catch语句中添加一个循环,使用户在不输入int值时输入int值,这是我到目前为止尝试过的,但没有成功
我在一个名为Teacher used return语句的类中声明了一个方法, 然后我构建了构造函数,然后从主类调用它 然而,在cmd windows和intellij中,都没有结果。 但如果我将方法类型更改为void并使用system。出来普林顿,一切都很好。 这里有什么问题?
我想做一个程序,要求你输入一些数据作为一个字符串,然后如果字符串超过6个字符长,它会要求你再做一次,直到你输入一个少于6个字符的答案,然后继续下一个问题,我怎么做?
但我得到一个错误说 所以我尝试使用另一个变量的这是但是我仍然收到相同的错误消息 我如何解决这个问题?或者有什么其他方法我可以用来做这件事? 我在这里使用的两个表在字段User_Name和Transaction_Date上具有相同的值,如所示
我在类中使用下面的代码,允许用户设置声明的的第一点、第二点或第三点。 编译器告诉我: 但是我认为catch语句的目的是能够捕获错误并返回描述错误的字符串,而不必担心匹配函数的返回类型。
创建表(int(10)不为空AUTO_INCREMENT,int(30),varchar(30),varchar(4)不为空,int(2)不为空,主键()); 创建表(varchar(10),主键()); 创建表(int(10),int(30),varchar(30),varchar(4),int(2), varchar(10), varchar(2)not null默认'p'); 分隔符$$ 为