Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不在Java中保存到MySQL数据库_Java_Mysql - Fatal编程技术网

不在Java中保存到MySQL数据库

不在Java中保存到MySQL数据库,java,mysql,Java,Mysql,我创建了一个表单,将药物信息插入数据库 仅需要ItemID、ItemName和到期日期。 如果需要,用户可以添加其他详细信息 我的上述功能代码 private void Save_btnActionPerformed(java.awt.event.ActionEvent evt) { try { String id = itemid_txt.getText(); String

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

仅需要ItemID、ItemName和到期日期。 如果需要,用户可以添加其他详细信息

我的上述功能代码

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)

帮我纠正这个


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

State
pst=conn.prepareStatement(sql)if-else
条件之前,当前它将仅在第一个
else-if
部分中初始化,否则
pst
将在后续的
else-if
else
块中
null

您的preparedStatement对象引用null,因为它仅在if-else-if-if-if-if-if的if块中初始化建筑 要解决此问题,请在if-else-if块外部初始化preparedStatement,或在每个if、elseif和else块中初始化它。 还有一件事,您没有在代码中关闭preparedStatement,这可能会导致内存泄漏,并将导致内存不足或将来以更高的事务速率连接到DB