0
我在這裏有一段Java代碼,它應該從數據庫查詢中檢索結果,並且ResultSet應該遍歷值以便爲ResultSet的每個條目檢索某些API數據。 但是,問題是我可以僅檢索ResultSet的第一個條目的API數據。在數據庫中循環ResultSet
此代碼完全按預期工作,並返回所有數據庫條目。
try {
ResultSet rs;
rs = stat.executeQuery("select * from schedule");
while (rs.next()) {
model.addRow(new Object[]{rs.getString("SHOW"), rs.getString("SEASON")});
}
} catch (Exception e) {
console.append(e.getMessage() + '\n');
}
但是,此代碼只返回第一個條目。
try {
ResultSet rs = stat.executeQuery("select * from schedule");
while (rs.next()) {
String show = rs.getString("SHOW");
String season = rs.getString("SEASON");
String api_url = "<API_URL>/" + show + "/" + season;
URL url = new URL(api_url);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
if (responseCode == 200) {
conn_stat.setText("Connection Status : OK");
} else {
conn_stat.setText("Connection Status : ERR");
}
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
String s = response.toString();
JsonArray json = JsonArray.readFrom(s);
for (int i = 0; i < json.size(); i++) {
JsonObject show_json = json.get(i).asObject();
int episode = show_json.get("episode").asInt();
String date = show_json.get("first_aired_iso").asString();
String title = show_json.get("title").asString();
String date_formatted = date.substring(0, date.indexOf("T"));
SimpleDateFormat original = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat target = new SimpleDateFormat("dd-MMM-yyyy");
Date unformatteddate = original.parse(date_formatted);
String dateStart = target.format(unformatteddate);
Date curr_date = new Date();
String dateStop = target.format(curr_date);
Date d1 = null;
Date d2 = null;
d1 = target.parse(dateStart);
d2 = target.parse(dateStop);
long diff = d2.getTime() - d1.getTime();
long diffDays = diff/(24 * 60 * 60 * 1000);
if (diffDays < 0) {
alert_model.addRow(new Object[]{show + " - " + episode, title, dateStart});
}
}
}
} catch (Exception e) {
console.append(e.getMessage() + '\n');
}
如果您在循環內添加日誌記錄,將打印多少個日誌?只有一個?你在'/ *裏面的某個地方引用了'rs嗎?使用RETRIEVED RESULT * /'做什麼?或者你提供的代碼都是?如果將'String api_url ...'下面的代碼註釋掉直到循環的結束括號,是否將返回所有記錄(使用記錄器查看將返回多少記錄)? –
一旦我得到特定條目的API結果,就不再有對ResultSet的引用。之後,只有來自API的JSON響應被操縱。 我正在檢查使用記錄器返回的記錄。 –
@PrzemyslawKruglej我試着通過評論代碼,它檢索所有的數據。但並非如此。 –