在我的Add按鈕裏面點擊我輸入了一些代碼,它工作的很好,在我的try catch塊裏面我有兩個JOptionPane消息。 第一條消息是說已經成功添加了信息,而另一個位於catch塊內則表示客戶端不能在同一日期兩次添加到同一行程中。在try catch中只顯示一條錯誤消息
當我運行這個沒有任何主鍵違規的代碼時,它顯示第一條消息(這是正確的),但也顯示第二條消息。它應該只顯示第一條消息並停止。但是在顯示它添加到數據庫的兩條消息之後。
當我輸入會給主鍵違規的東西時,它會顯示添加成功的消息(這是錯誤的),然後是錯誤消息。它不會添加到數據庫中。
我在做什麼錯?
這是我的代碼。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DBConnection db = new DBConnection();
if (txt_name.getText().isEmpty() || txt_escort.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Cannot have empty fields");
} else {
clientID = combo_client.getSelectedItem().toString();
tourID = combo_tour.getSelectedItem().toString();
date = combo_date.getSelectedItem().toString();
escortID = txt_escort.getText();
clientName = txt_name.getText();
try {
query = "INSERT INTO tourRParticipant(ClientID,Name,TourID,StartDate,EscortID) VALUES (?,?,?,?,?)";
PreparedStatement stm = db.getconn().prepareStatement(query);
JOptionPane.showMessageDialog(null, "Added successfully!");
stm.setString(1, clientID);
stm.setString(2, clientName);
stm.setString(3, tourID);
stm.setString(4, date);
stm.setString(5, escortID);
rs = stm.executeQuery();
rs.next();
conn.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "ERROR..Client cannot be added to the same tour with the same date");
}
ViewTable();
}
}
寫下這行JOptionPane.showMessageDialog(null,「Added successfully!」);在rs = stm.executeQuery()之後; – SpringLearner
由於您在實際執行jdbc查詢之前顯示了第一條消息,因此您很可能會遇到一個仍然被捕獲的「SQLException」。 – Dragondraikk
這是因爲您不驗證引發了什麼異常。你在catch塊中的描述是錯誤的。 另外,在打印成功添加之前,您不驗證客戶端已添加。將該行移動到查詢執行後 – Stultuske