当我将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);
}