2015-06-15 50 views
0

我嘗試了一些代碼插入到oracle多個表中。但它不執行。 任何人都可以幫助我嗎?是否可以使用PreparedStatement在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

不執行平均,面對任何錯誤? – venkat

+0

它不顯示任何錯誤,同時記錄沒有插入到數據庫中。 – Thirunavukkarasu

+0

是否達到了循環?即確保rowCount值大於零。 – venkat

回答

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"; 

...或者在每個字符串結束時,如果你喜歡。

爲所有插入指定列名也是更好的做法,即使您將值插入每列 - 它更清晰,並且更容易發現排序中的錯誤。

+0

我們可以在不指定列名的情況下插入值嗎? – venkat

+0

@VenkatSri - 你可以,如果你是以正確的順序爲每一列提供一個值; [它在語法圖中是可選的](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9014.htm#i2121694)。但最好列出列名稱。 –

+0

非常感謝。我得到了結果。 – Thirunavukkarasu

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"; 
+0

由於日期格式我得到了答案。 – Thirunavukkarasu

相關問題