我尝试了一些代码插入到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();
}
这是正确的方法吗?如果有可能请提供给我。
先谢谢。
答案 0 :(得分:0)
您通过连接字符串来构建SQL语句,但是不要在子句之间留下空格;所以你最终得到的insert allinto t_stoc...
无效。您在第二个子句中也有重复的into
。
你说你没有收到任何错误,所以你可能会在代码后面压制它们。您应该仔细研究为什么您没有看到任何异常,因为该语句无效。
在每个添加的字符串的开头添加一个空格,至少在语法有效的地方:
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";
...或者如果您愿意,可以在每个字符串的末尾。
更好的做法是为所有插入指定列名,即使您在每列中插入值 - 它更清晰,并且更容易发现排序中的错误。
答案 1 :(得分:0)
可能是查询语法错误,请在第三行删除into
,请查看以下内容
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";