我有一些爲任務創建的數據庫。每個任務記錄都有用戶名,說明,任務日,任務時間列。無法從SQL執行中正確獲取ResultSet
我想通過兩個值拉動記錄:taskhour和taskday或每個人單獨。
所以我有一個函數,獲取任務對象,並檢查任務日或任務時間是否爲空,並相應地準備查詢。但是由於某種原因ResultSet出了問題...這是我的功能:
public List<Task> getUserTasks(Task task) throws SQLException {
List<Task> listOfTasks = new ArrayList<>();
try {
String query = "";
PreparedStatement pStatement;
if (task.getDay() != 0 && task.getHour() != 0) {
query = "select * from TASKS where USERNAME=? and TASKDAY=? and TASKHOUR=?";
pStatement = connection.prepareStatement(query);
pStatement.setString(1, task.getUsername());
pStatement.setInt(2, task.getDay());
pStatement.setInt(3, task.getHour());
} else if (task.getDay() == 0) {
query = "select * from TASKS where USERNAME=? and TASKHOUR=?";
pStatement = connection.prepareStatement(query);
pStatement.setString(1, task.getUsername());
pStatement.setInt(2, task.getHour());
} else {
query = "select * from TASKS where USERNAME=? and TASKDAY=?";
pStatement = connection.prepareStatement(query);
pStatement.setString(1, task.getUsername());
pStatement.setInt(2, task.getDay());
}
ResultSet rs;
rs = pStatement.executeQuery();
if (rs.next()) {
Task taskToAdd = new Task();
taskToAdd.setUsername(rs.getString("USERNAME"));
taskToAdd.setDescription(rs.getString("DESCRIPTION"));
taskToAdd.setDay(rs.getInt("TASKDAY"));
taskToAdd.setHour(rs.getInt("TASKHOUR"));
listOfTasks.add(taskToAdd);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return listOfTasks;
}
我做錯了什麼?
謝謝!
「...... ResultSet出錯了......」您必須比這更具體。 * ResultSet有什麼錯誤? –
我懷疑問題是返回的ArrayList至多包含一行。我懷疑你想**'while(rs.next())'**。使用'while'來形成一個循環,所以動作重複,直到沒有更多的行可以被檢索。 (我仍然支持我之前回答中的所有建議,特別是在'finally'塊中關閉該語句。) – spencer7593