我知道有相同的標題相似的線程,但我的問題地址不同點。我檢查結果集中看到如果沒有記錄在表(SQLite)使用JDBC通過檢查結果集
查詢是否從rating
列返回任何值,如果是拿這個值,如果沒有附加0.0
到的ArrayList(評級)它添加到arraylist
。
在我的代碼中,else從未得到執行,導致arraylist中沒有0.0(缺少日期)。是否我的查詢在某處出錯?請幫忙。
String query = "SELECT * FROM DATA WHERE (dateofday BETWEEN ? AND ?) AND id = ?";
String mediapath = null;
try {
preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(3, Controller.id_logged_in);
preparedStatement.setString(1, datepickerfrom.getValue().toString());
preparedStatement.setString(2, datepickerto.getValue().toString());
resultSet = preparedStatement.executeQuery();
boolean flag = true;
if (resultSet.next()) {
do {
ratings.add(resultSet.getFloat("rating"));
countofday++;
}
while (resultSet.next());
} else {
ratings.add(Float.valueOf(0));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
connection.close();
}
回覆:*「沒有選擇。」 - - 這很愚蠢。你已經費了很大力氣創建一個'allDates'列表;你可以很容易地創建一個'Map',其中日期作爲鍵和值被初始化爲零,循環遍歷原始的ResultSet來填充值,然後使用Arrays.asList(dateMap.values ().toArray(new Float [0]))'將地圖的值轉換爲ArrayList。 –
@GordThompson是的,我也可以這樣做..但我的主要問題是如何做到這一點,沒有循環每一個日期和做一個查詢之間使用。 – minigeek
*「如何做到這一點...用一個查詢之間使用」* - 這就是我說的循環「原始ResultSet」時的意思。 –