Java 使用ArrayList字段将人员添加到数据库。Servlet
尝试使用jdbc和mysql创建CRUD应用程序。我在数据库中有Person.class和两个表: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
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将具有字段列表电话的人员添加到数据库???