Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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_Sql - Fatal编程技术网

当我将java代码中的数据添加到MYSQL服务器时,它不接受空值,如何使它接受空值?

当我将java代码中的数据添加到MYSQL服务器时,它不接受空值,如何使它接受空值?,java,mysql,sql,Java,Mysql,Sql,这是我的数据库部分 private void jButtonAddActionPerformed(java.awt.event.ActionEvent evt) { String book1; SimpleDateFormat Dformat = new SimpleDateFormat("yyyy-MM-dd"); try { String sql

这是我的数据库部分

 private void jButtonAddActionPerformed(java.awt.event.ActionEvent evt) {                                           
    String book1;
    SimpleDateFormat Dformat = new SimpleDateFormat("yyyy-MM-dd");
    try {
        String sql = "INSERT INTO `book`(`Date`,`Book Title`, `Saled Book`) VALUES (?,?,?)";
        con = DriverManager.getConnection("jdbc:mysql://localhost/bookstore", "root", "");
        pst = con.prepareStatement(sql);

        pst.setString(1, Dformat.format(jDateChooser1.getDate()));
        pst.setString(2, jTextFieldBookTitle.getText());

        book1 = "Saled Book";
        if (jTextFieldSaledBook.getText().isEmpty()) {
            pst.setNull(3, Types.INTEGER);
        } else {
            pst.setInt(3, Integer.parseInt(jTextFieldSaledBook.getText()));
        }
        pst.executeUpdate();
        // To Refresh JTable
        DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
        model.setRowCount(0);
        showTableData();
        clearFields();
        JOptionPane.showMessageDialog(null, "Inserted Data Successfully");
    } 
    catch(NumberFormatException nfe){
        JOptionPane.showMessageDialog(null, "Invalid Number in Field ");
        
    }
    catch (HeadlessException | SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);
    }
}   

                                   
当我没有数字就跑进去时,它会说:

com.mysql.jdbc.exceptions.jdbc4.MysqlIntegrityConstraintViolationException:Column “已售出图书”不能为空


就我所能理解的逻辑而言,以下是空值可以进入“Saled Book”列的内容

对我来说,它说:“如果我在jTextFieldSaledBook中没有找到任何东西,那么将‘Saled Book’值设置为null”。这是在“notnull”列中传递null值的地方

如果我没弄错的话,“Saled book”列就是用来存储您售出的图书数量的(它的类型是“int”)。所以,如果在jTextFieldSaledBook中找不到任何内容,则需要插入0而不是null

我想如果你放弃了这样的东西,情况会有所改变

if (jTextFieldSaledBook.getText().isEmpty()) {
        pst.setNull(3, Types.INTEGER);
    }

会解决你的问题。请注意,我不是Java开发人员,因此您可能需要修复我的代码版本,以使其可运行

我投票支持选项2!抱歉35; ekochergin,它也是ID INT(15)从我的Xampp表格行列中自动递增的,我已经编辑过了。但这对我不起作用。谢谢你的建议并查看我的代码,please@merobi我已经更新了我的答案谢谢,@ekochergin,你回答了我的问题。上帝保佑你
if (jTextFieldSaledBook.getText().isEmpty()) {
        pst.setNull(3, Types.INTEGER);
    }
    if (jTextFieldSaledBook.getText().isEmpty()) {
        pst.setInt(3, 0);
    }