【发布时间】:2015-05-20 09:43:48
【问题描述】:
在我的“添加”按钮单击中,我键入了一些运行良好的代码,在我的 try catch 块中,我有两条 JOptionPane 消息。 第一条信息表示信息已成功添加,另一条在 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, "添加成功!");在 rs = stm.executeQuery(); 之后
-
由于您在实际执行 jdbc 查询之前显示了第一条消息,因此您很可能会得到一个仍然被捕获的
SQLException。 -
这是因为你没有验证抛出了什么异常。您在 catch 块中的描述是错误的。此外,在打印成功添加客户端之前,您不会验证是否添加了客户端。将该行移动到执行查询之后
-
@SpringLearner 我以前试过。但它仍然提供相同的输出。
-
@Dragondraikk 现在在执行下粘贴成功消息后不显示成功消息。即使我输入正确,它也只是显示错误
标签: java sql database jframe try-catch