准备好的语句,将字符串“”插入数据库而不是null

时间:2018-07-27 13:31:24

标签: java prepared-statement jtextfield

我的问题是,如果我尝试在应用程序中保留空白,则此代码将在txtIme.getText()和txtPrezime.getText()行上的数据库中插入一个空字符串,因此我的if语句没有将.executeUpdate()识别为0,因此不会显示没有任何更改。我可以以某种方式更改它,以便在JTextField中保留空格时应用程序可以到达我的if语句吗?谢谢。

    private void btnDodajActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {

        izraz = veza.prepareStatement("insert into autor (ime,prezime)" + "value (?,?)");

        izraz.setString(1, txtIme.getText());
        izraz.setString(2, txtPrezime.getText());



        if (izraz.executeUpdate()== 0) {
            JOptionPane.showMessageDialog(getRootPane(), "Nothing was changed.");

        } else {
            ucitajIzBaze();
            ocistiPolja();
        }

        izraz.close();

    } catch (SQLException ex) {
        ex.printStackTrace();
    }

}                          

1 个答案:

答案 0 :(得分:1)

如果您不想使用任何库

private void btnDodajActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {

        if(txtIme.getText() == null || "".equals(txtIme.getText())) return;
        if(txtPrezime.getText() == null || "".equals(txtPrezime.getText())) return;
        izraz = veza.prepareStatement("insert into autor (ime,prezime)" + "value (?,?)");


        izraz.setString(1, txtIme.getText());
        izraz.setString(2, txtPrezime.getText());



        if (izraz.executeUpdate()== 0) {
            JOptionPane.showMessageDialog(getRootPane(), "Nothing was changed.");

        } else {
            ucitajIzBaze();
            ocistiPolja();
        }

        izraz.close();

    } catch (SQLException ex) {
        ex.printStackTrace();
    }

}    

但是我建议对字符串相关的操作使用任何库,例如

if(StringUtils.isBlank(txtIme.getText())) return;
if(StringUtils.isBlank(txtPrezime.getText())) return;

它在apache公共语言包中。