【问题标题】:How to insert data into MySql in some specific column in java [duplicate]如何在java中的某些特定列中将数据插入MySql [重复]
【发布时间】:2021-07-24 14:13:10
【问题描述】:

我遇到了问题。

我的 MYsql 数据库中有一个名为 issuebook 的表,其中有 5 列。

这些列是:memberid、membername、bookname、issuedate、returndate。

所以我只想在 memberid、membername、bookname3 列中插入数据,而暂时将其他 2 列留空(因为在这些列中,当管理员给出日期然后数据将插入这些列中)。

但是每当我尝试插入它时,它都会向我显示如下错误:

java.sql.SQLException: 字段 'issuedate' 没有默认值

我的代码如下:

String bname,name,id;
id = Start.ID1;
name = Start.NAME1;
bname = bookBox.getSelectedItem().toString();
try {
    pst = con.prepareStatement("insert into issuebook(memberid,membername,bookname)values(?,?,?)");
    pst.setInt(1, Integer.parseInt(id));
    pst.setString(2, name);
    pst.setString(3, bname);
    pst.executeUpdate();

    JOptionPane.showMessageDialog(null, "Your Request is sent.");
    
}
catch (SQLException e1) {
    e1.printStackTrace();
}

我的数据库表:

【问题讨论】:

  • 可能issuedate 列已被定义为“非空”。向我们展示表定义。
  • @LukaszBlasiak 列名:发行日期类型:日期空:非空
  • @LukaszBlasiak 我不确定。我编辑了我的问题并上传了我的数据库图片。

标签: java mysql swing


【解决方案1】:

问题在于issuedate 列定义。正如您在评论中提到的那样 - 它被定义为 not null

您的 SQL 在 into 子句中省略了 issuedate 列,这意味着查询将尝试将 null 值插入其中。您必须在 SQL 中提供日期或重新定义 issuedate 列以允许空值。

查看这个 SO 线程 Field doesn't have a default values

【讨论】:

  • 根据您的建议将我的列默认值从非空编辑为空后,它可以正常工作,没有任何错误。非常感谢。
  • 不客气,很高兴它有帮助:)
  • 再次非常感谢 :)
猜你喜欢
  • 2012-06-20
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多