java删除sql选项消息中的IF-ELSE语句
我试图创建一个if语句,但不起作用,如果在jtable中找到isbn book,则显示消息“book”delete“否则“book”not found。有可能吗java删除sql选项消息中的IF-ELSE语句,java,oracle,swing,if-statement,joptionpane,Java,Oracle,Swing,If Statement,Joptionpane,我试图创建一个if语句,但不起作用,如果在jtable中找到isbn book,则显示消息“book”delete“否则“book”not found。有可能吗 private void elimina_libroActionPerformed(java.awt.event.ActionEvent evt) { Connection conn = Connessione.ConnecrDb(); Statement stmt = null; ResultSet e
private void elimina_libroActionPerformed(java.awt.event.ActionEvent evt) {
Connection conn = Connessione.ConnecrDb();
Statement stmt = null;
ResultSet emps = null;
boolean found = false;
try{
if(emps.next())
found= true;
String sql= "DELETE FROM progetto.libro WHERE isbn =?";
pst=(OraclePreparedStatement) conn.prepareStatement(sql);
pst.setString (1, txt_isbn.getText());
pst.execute();
if (!found)
JOptionPane.showMessageDialog(null, "LIBRO ELIMINATO");
else{
JOptionPane.showMessageDialog(null, "BOOK NOT FOUND","ERRORE",jOptionPane.WARNING_MESSAGE);
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,e);
}
但是不要工作,你能帮我吗?谢谢
我用这个换代码
Connection conn = Connessione.ConnecrDb();
Statement stmt = null;
ResultSet emps = null;
try{
String sql= "DELETE FROM progetto.libro WHERE isbn =?";
pst=(OraclePreparedStatement) (PreparedStatement) conn.prepareStatement(sql);
pst.setString (1, txt_isbn.getText());
int deleted = pst.executeUpdate();
if (deleted == 0) {
JOptionPane.showMessageDialog(null, "LIBRO ELIMINATO");
Update_table();
}else
JOptionPane.showMessageDialog(null, "LIBRO NON TROVATO");
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,e);
}
但是,如果我插入了错误的isbn,则信息为:“图书删除”;如果我插入了正确的isbn,则信息为“图书未找到”;如果我再次插入正确的isbn,则信息为“图书删除”,并且图书从数据库中删除
pst=(PreparedStatement) conn.prepareStatement(sql);
pst.setString (1, txt_isbn.getText());
int deleted = pst.executeUpdate();
if (deleted == 0) {
...
int executeUpdate()引发SQLException
执行此PreparedStatement对象中的SQL语句,其中
必须是SQL数据操作语言(DML)语句,例如
插入、更新或删除;或不返回任何内容的SQL语句,
例如DDL语句
返回:
(1)SQL数据操作语言(DML)语句的行数,或(2)不返回任何内容的SQL语句的行数为0
变量
deleted
被解释为错误。此外,对于每个prepareStatement,最好将其关闭,因为您正在联系SQL驱动程序
无需导入Oracle类;JDBC允许独立于供应商
最佳做法是使用try with resources自动关闭pst
String sql = "DELETE FROM progetto.libro WHERE isbn = ?";
try (PreparedStatement pst = conn.prepareStatement(sql)) {
pst.setString (1, txt_isbn.getText());
int deletionsCount = pst.executeUpdate();
if (deletionsCount > 0) {
JOptionPane.showMessageDialog(null, "LIBRO ELIMINATO");
Update_table();
} else {
JOptionPane.showMessageDialog(null, "LIBRO NON TROVATO");
}
}
catch (SQLException e)
{
JOptionPane.showMessageDialog(null, e);
}
如果(emps.next()),此代码将在此处抛出NullPointerException-
如果(emps.next())
。这是您正在运行的实际代码吗?不工作是什么意思?在创建emps
实例的地方,当您在itI上调用下一个方法时,它为null。我尝试了您的解决方案,但工作异常。我更新了我的第一篇文章。非常感谢。pst.executeUpdate()将返回许多已删除的行。如果(已删除==0)->未删除任何内容。因此:LIBRO非TROVATO如果(已删除>0)->已删除书籍,则:LIBROELIMINATO@Joeblade啊,对了!!!现在我明白了。事实上,修复代码(反转)现在工作得很好。非常感谢!!!