当我将数据从 java 代码添加到 MYSQL Server 时,它不接受 Null 值,如何让它接受 Null 值?
Posted
技术标签:
【中文标题】当我将数据从 java 代码添加到 MYSQL Server 时,它不接受 Null 值,如何让它接受 Null 值?【英文标题】:When I Add my data from java code to MYSQL Server its not Accept Null Values, how to Make it to accept Null Values? 【发布时间】:2021-03-10 09:32:31 【问题描述】: 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);
这是我的数据库部分
CREATE TABLE `book` (
`ID` int(15) AUTO INCREMENT,
`Date` date NOT NULL,
`Book Title` varchar(20) NOT NULL,
`Saled Book` int(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
当我运行并输入没有数字时,它会显示:
com.mysql.jdbc.exceptions.jdbc4.MysqlIntegrityConstraintViolationException:Column 'Sale Book' 不能为空......
【问题讨论】:
【参考方案1】:据我了解的逻辑,这里是空值可以进入“销售书”列
if (jTextFieldSaledBook.getText().isEmpty())
pst.setNull(3, Types.INTEGER);
对我来说,它说:“如果我在 jTextFieldSaledBook 中没有找到任何内容,则将 'Saled Book' 值设置为 null”。这是在“非空”列中传递空值的地方。
如果我没记错的话,“已售书”栏会存储您已售出的图书数量(它的类型为“int”)。因此,如果在 jTextFieldSaledBook 中找不到任何内容,则需要插入 0 而不是 null。
我假设用这样的东西改变 if-then 部分
if (jTextFieldSaledBook.getText().isEmpty())
pst.setInt(3, 0);
将解决您的问题。请注意,我不是 Java 开发人员,因此您可能需要修复我的代码版本以使其可运行
【讨论】:
对不起#ekochergin,它也是我的 Xampp 表行列中的 ID INT(15) AUTO_INCREMENT 已编辑。但这对我不起作用。感谢您的建议,请查看我的代码 谢谢,@ekochergin,你回答了我的问题。上帝保佑你以上是关于当我将数据从 java 代码添加到 MYSQL Server 时,它不接受 Null 值,如何让它接受 Null 值?的主要内容,如果未能解决你的问题,请参考以下文章