Java 使用ArrayList字段将人员添加到数据库。Servlet

Java 使用ArrayList字段将人员添加到数据库。Servlet,java,mysql,servlets,jdbc,crud,Java,Mysql,Servlets,Jdbc,Crud,尝试使用jdbc和mysql创建CRUD应用程序。我在数据库中有Person.class和两个表: class Person { String name; String surname; List<String> phones; } Tables: `phone` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `owner` INT UNSIGNED NOT NULL, `number` VARCHAR(5

尝试使用jdbc和mysql创建CRUD应用程序。我在数据库中有Person.class和两个表:

class Person {
String name;
String surname;
List<String> phones;
}

Tables:    
`phone`
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `owner` INT UNSIGNED NOT NULL,
    `number` VARCHAR(50) NOT NULL,
    CONSTRAINT `PK_phone` PRIMARY KEY (`id`)
)
  `person`
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `surname` VARCHAR(150) NOT NULL,
    `name` VARCHAR(150) NOT NULL,
     CONSTRAINT `PK_phonebook` PRIMARY KEY (`id`)
)
ALTER TABLE `phone` 
 ADD CONSTRAINT `FK_phone_person`
    FOREIGN KEY (`owner`) REFERENCES `person` (`id`) ON DELETE Cascade ON UPDATE Cascade
;
SET FOREIGN_KEY_CHECKS=1 ;
班级人员{
字符串名;
串姓;
列出电话;
}
桌子:
`电话`
(
`id`INT无符号非空自动增量,
`所有者`INT UNSIGNED NOT NULL,
`编号'VARCHAR(50)不为空,
约束`PK\u phone`主键(`id`)
)
`人`
(
`id`INT无符号非空自动增量,
`姓'VARCHAR(150)不为空,
`name`VARCHAR(150)不为空,
约束`PK\u phonebook`主键(`id`)
)
更改表格“电话”
添加约束“FK\u phone\u person”`
外键(`owner`)在更新级联的删除级联上引用`person`(`id`)
;
设置外键检查=1;

如何使用servlet将具有字段列表电话的人员添加到数据库??? 例如:
哈里·史密斯+37521987902
+5672713

+45679012214

这个想法很简单,你可以用这种方式

  • 插入你的人
  • 获取那个人的身份证
  • 插入电话号码列表
  • 您可以这样使用它:

    try {
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(DB_URL, DB_username, DB_password);
    
        String query = "INSERT INTO person (surname, name) values(?, ?)";
        PreparedStatement preparedStatement = connection.prepareStatement(query);
        preparedStatement.setString(1, "hello");
        preparedStatement.setString(2, "jdbc");
    
        int affectedRows = preparedStatement.executeUpdate();
        long id = 0;
        if (affectedRows > 0) {
            ResultSet generatedKeys = preparedStatement.getGeneratedKeys();
            if (generatedKeys.next()) {
                id = generatedKeys.getLong(1);
            } else {
                throw new SQLException("Creating user failed, no ID obtained.");
            }
        }
    
        connection.setAutoCommit(false);
        PreparedStatement ps = connection.prepareStatement("INSERT INTO phone (owner, number) values(?, ?)");
        for (String phone : listePhone) {
            preparedStatement.setLong(1, id);
            preparedStatement.setString(2, phone);
            ps.addBatch();
        }
        ps.executeBatch();
        connection.commit();
    
    } 
    

    您可以学习如何使用

    一次性执行多个语句,那么问题到底是什么?我如何使用servlet将具有字段列表电话的人员添加到数据库???