-1

我创建了一个 JSP 页面来注册新用户。在注册表中,有 5 个字段供用户输入他们的详细信息。

按下提交按钮后,他们将被带到另一个页面,在那里他们必须填写另一个表格,其中包括他们的一些其他详细信息。用户在第一个表单中输入的数据已成功插入到第一个表中,但是,当他们以第二个表单发送数据时,会出现错误提示

“java.sql.SQLException:字段 'artist_id' 没有默认值”。

这里atrist_id是第一个表的主键,它是第二个表的外键。以下是注册和artist_info

第一个表的结构

第二张表的结构

try {

    String address_1 = request.getParameter("address_1");
    String address_2 = request.getParameter("address_2");
    String city = request.getParameter("city");
    String postal_code = request.getParameter("postal_code");
    String phone_number = request.getParameter("phone_number");

    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/painter?autoReconnect=true&useSSL=false", "root", "");
    Statement st = con.createStatement();

    //st.executeUpdate("insert into signup(uid,fname,lname,email,password,country)values('"+firstName+"','"+lastName+"','"+email+"','"+password+"','"+country+"')");
    st.executeUpdate("insert into artist_info(address_1,address_2,city,postal_code,phone_number)"
        + "values('" + address_1 + "','" + address_2 + "','" + city + "','" + postal_code + "','" + phone_number + "')");

我应该如何更改此代码以获取artist_id第二个表的外键(artist_id)的值。谢谢。

4

1 回答 1

0

我猜这是因为如果您将表中的字段设置为主键,则它不能为空。似乎您没有序列生成器,因此您必须在尝试提交之前在 artist_info 中设置 artist_id。

所以,这里的解决方案是:

  1. 在您的数据库中为该字段获取序列生成器
  2. 不要忘记在artist_info 中设置artist_id。
于 2020-01-22T06:50:17.690 回答