java - 不保存到 MySQL 数据库中的 Java

标签 java mysql

我创建了一个表单来将药物信息插入数据库。

只有 ItemID、ItemName 和 Expiry date 是必需的。 如果需要,用户可以添加其他详细信息。

我的上述功能的代码;

private void Save_btnActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        String id = itemid_txt.getText();
        String name = itemname_txt.getText();
        String rec=reclevel_txt.getText();
        String qty=qty_txt.getText();
        String wp =wprice_txt.getText();
        String sp =sprice_txt.getText();
        Date expp =expday_chooser.getDate();
        String dess = des_txtarea.getText();

        String date = ((JTextField)dayChooser.getDateEditor().getUiComponent()).getText();

        String exp = ((JTextField)expday_chooser.getDateEditor().getUiComponent()).getText();
        String des = des_txtarea.getText();

        if(id==null && name==null && exp==null){
            JOptionPane.showMessageDialog(null, "Fill required fields(Item ID ,Item Name ,Exp Date) and Try again...");

        }else if(wp!=null && sp!=null && rec!=null && qty!=null && exp==null){


            String sql = "Insert into druginfo (ItemID,ItemName,AddedDate,RecorderLevel,InStock,WSPrice,CostPrice,ExpDate,Description)values (?,?,?,?,?,?,?,?,?)";

            pst=conn.prepareStatement(sql);

            pst.setString(1, id);
            pst.setString(2, name);
            pst.setString(3, date);
            pst.setString(4, dess);           
            pst.setString(5, qty);
            pst.setString(6, wp);
            pst.setString(7, sp);
            pst.setString(8, exp);
            pst.setString(9, des);
        }else{
            pst.setString(1, id);
            pst.setString(2, name);
            pst.setString(3, date);
            pst.setString(4, null);           
            pst.setString(5, null);
            pst.setString(6, null);
            pst.setString(7, null);
            pst.setString(8, null);
            pst.setString(9, des);
        }
        pst.execute();

        JOptionPane.showMessageDialog(null, "New Item Data Saved...");

        itemid_txt.setText(null);
        itemname_txt.setText(null);
        reclevel_txt.setText(null);
        qty_txt.setText(null);        
        wprice_txt.setText(null);
        sprice_txt.setText(null);
        expday_chooser.setDate(null);
        des_txtarea.setText(null);
    } catch (SQLException ex) {
        Logger.getLogger(InventoryManagementenew.class.getName()).log(Level.SEVERE, null, ex);
    }



}

但是当只给出必填字段并且给出所有字段时,不添加到数据库中。代码抛出 java.lang.NullPointerException

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.bit.project.InventoryManagementenew.Save_btnActionPerformed(InventoryManagementenew.java:468)
at com.bit.project.InventoryManagementenew.access$500(InventoryManagementenew.java:27)
at com.bit.project.InventoryManagementenew$6.actionPerformed(InventoryManagementenew.java:366)

第 468 行是 pst.setString(1, id);

帮我改正这个。

enter image description here

最佳答案

您只需在 else if 子句中初始化 PreparedStatementelse 部分既没有 sql 字符串也没有准备好的语句。

关于java - 不保存到 MySQL 数据库中的 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152998/

相关文章:

java - web.xml 常规选项卡 Intellij

mysql - 为每一行添加注释

Mysql 查询学习天数

mysql - MYSQL 中 DOWN 和 UP 事件之间的时间戳差异,但 UP 和 DOWN 事件之间的时间戳差异

mysql - 我可以将结果限制为 sql 中的特定数字吗?

php - 两个sql插入然后更新不起作用

尝试执行 java 套接字操作时出现 java.io.EOFException

java - 创建 JLabel 数组

java - 调用适当的函数

java - 单击时正确生成整数