如何一次在多个表中添加行?

Posted

技术标签:

【中文标题】如何一次在多个表中添加行?【英文标题】:How can I add rows in multiple tables at once? 【发布时间】:2012-12-27 21:53:54 【问题描述】:

我在 netbeans 中制作了一个 java 程序,它在我的数据库中执行不同的查询。我在表中添加数据时遇到问题。它在前两个表中插入数据,但不在第三个表中。代码如下:

String sql="INSERT INTO  `adresa` (`ID` ,`TARA` ,`JUDET` ,`LOC` ,`CPOSTAL` ,`STRADA` ,`NR` ,`BLOC` ,`SC` ,`APT`) VALUES (?,?,?,?,?,?,?,?,?,?)";
    pst=conn.prepareStatement(sql);
    pst.setString(1, ID.getText());
    pst.setString(2, tara.getText());
    pst.setString(3, judet.getText());
    pst.setString(4, loc.getText());
    pst.setString(5, cpostal.getText());
    pst.setString(6, strada.getText());
    pst.setString(7, nr.getText());
    pst.setString(8, bloc.getText());
    pst.setString(9, sc.getText());
    pst.setString(10, apt.getText());
    pst.execute();

String sql2="INSERT INTO  `pbd`.`buletin` (`CNP` ,`DATAN` ,`SEX` ,`SERIENRB` ,`DATAEMIT` ,`DATAEXP`) VALUES (?,?,?,?,?,?);";
pst.setString(1, CNP.getText());
pst.setString(2, datan.getText());
pst.setString(3, sex.getText());
pst.setString(4, serienrb.getText());
pst.setString(5, dataemit.getText());
pst.setString(6, dataexp.getText());
pst.executeBatch();

String sql3="INSERT INTO  `pbd`.`persoana` (`ID` ,`CNP` ,`NUME` ,`PRENUME` ,`NATIONALITATE` ,`VIU`) VALUES (?,?,?,?,?,?);";
pst.setString(1, ID.getText());
pst.setString(2, CNP.getText());
pst.setString(3, nume.getText());
pst.setString(4, prenume.getText());
pst.setString(5, nationalitate.getText());
pst.setString(6, viu.getText());
pst.executeBatch();

这里是表格信息:

我认为查询是错误的或表格的概念,但我不确定。请告诉我你的想法。

【问题讨论】:

【参考方案1】:

您需要将 sql2 和 sql3 的代码更改为

pst.close();
String sql2="INSERT ...
pst=conn.prepareStatement(sql2);
...
pst.executeUpdate();

pst.close();
String sql3="INSERT ...
pst=conn.prepareStatement(sql3);
...
pst.executeUpdate();

executeBatch 在这种情况下是无关紧要的,它只能用于同一个 SQL 的不同参数集。

【讨论】:

以上是关于如何一次在多个表中添加行?的主要内容,如果未能解决你的问题,请参考以下文章

如何不在 dataverse 表中添加重复值表电源自动添加行

Grafana:一次在多个面板上添加注释

有没有办法一次在 Unity 3d 动画窗口中添加多个属性?

mysql查询一次在单个查询中在多个表中插入记录

如何链接多个组合框表中的两个组合框?

将行添加到多个工作表时清除错误