Java 是否可以使用PreparedStatement在Oracle上插入多个表?

Java 是否可以使用PreparedStatement在Oracle上插入多个表?,java,oracle,Java,Oracle,我尝试将一些代码插入到oracle多个表中。但它不会执行。 有人能帮我吗 这是我的密码: String sql = "insert all" + "into t_stock_purchase values(?,?,?,?)" + "into t_stocks values(?,?,?)" + "into t_stock_status(godownname,itemname,receivedfrom,

我尝试将一些代码插入到oracle多个表中。但它不会执行。 有人能帮我吗

这是我的密码:

String sql = "insert all"
                + "into t_stock_purchase values(?,?,?,?)"
                + "into t_stocks values(?,?,?)"
                + "into  t_stock_status(godownname,itemname,receivedfrom,receiveddate,receivedqty,availablebal) values(?,?,?,?,?,?)"
                + "select 1 from dual";

ps = con.prepareStatement(sql);
int rowCount = PurchaseTable.getRowCount();

System.out.println("Row Count = "+rowCount);

for (int i = 0; i < rowCount; i++) {
ps.setString(1, partyNameLable);
ps.setString(2, dateLable);
ps.setString(3, (String) PurchaseTable.getValueAt(i, 0));
ps.setInt(4, (int) PurchaseTable.getValueAt(i, 1));
ps.setString(5, "Purchase");
ps.setString(6, (String) PurchaseTable.getValueAt(i, 0));
ps.setInt(7, (int) PurchaseTable.getValueAt(i, 1));
ps.setString(8, "Purchase");
ps.setString(9, (String) PurchaseTable.getValueAt(i, 0));
ps.setString(10, partyNameLable);
ps.setString(11, dateLable);
ps.setInt(12, (int) PurchaseTable.getValueAt(i, 1));
ps.setInt(13, (int) PurchaseTable.getValueAt(i, 1));
ps.execute();
}
String sql=“全部插入”
+“转换成股票购买价值(?,,?)”
+“转换成股票价值(?,?)”
+“进入库存状态(货仓名称、项目名称、收货来源、收货日期、收货数量、可用库存)值(?,,,,,,?,?)”
+“从双重选择1”;
ps=con.prepareStatement(sql);
int rowCount=PurchaseTable.getRowCount();
System.out.println(“行计数=”+rowCount);
对于(int i=0;i
这条路对吗?如果有可能的话,请提供给我


提前感谢。

您通过连接字符串来构建SQL语句,但在子句之间没有留下空格;因此,您最终得到的是
insert allinto t_stoc…
,这是无效的。在第二个子句中,您还有一个复制的

您说您没有收到任何错误,因此您可能会在稍后的代码中抑制这些错误。您应该真正调查为什么您没有看到任何异常,因为该语句无效

在每个添加的字符串的开头添加空格,至少在语法有效所必需的位置添加空格:

String sql = "insert all"
            + " into t_stock_purchase values(?,?,?,?)"
            + " into t_stocks values(?,?,?)"
            + " into t_stock_status(godownname,itemname,receivedfrom,"
            + "receiveddate,receivedqty,availablebal) values(?,?,?,?,?,?)"
            + " select 1 from dual";
。。。或者在每个字符串的末尾,如果您愿意的话


更好的做法是为所有插入项指定列名,即使是在每一列中插入值——这样更清晰,更容易在排序中发现错误。

可能是查询语法错误,并将
删除到第三行中的
,请检查以下内容

 String sql = "insert all"
            + " into t_stock_purchase(col1,col2,col3,col4) values(?,?,?,?)"
            + " into t_stocks(col1,col2,col3) values(?,?,?)"
            + " into t_stock_status(godownname,itemname,receivedfrom,receiveddate,receivedqty,availablebal) values(?,?,?,?,?,?)"
            + " select 1 from dual";

执行不意味着面临任何错误?它不显示任何错误,同时记录未插入数据库。是否达到for循环?即确保rowCount值大于零。如果达到for循环,则将行计数打印为3(因为JTable上有3行)。它没有显示任何错误。查询语法错误,前两个表缺少列名。我们可以在不指定列名的情况下插入值吗?@VenkatSri-如果您按正确的顺序为每个列提供值,则可以。但是最好列出列名。非常感谢。我得到了结果。