2013-07-09 21 views
2

您好我正嘗試使用JDBC addBatch 更新sybase db。我在運行時創建表並在jdbc批處理中插入值。從逗號按以下格式JDBC PreparedStatement.executeBatch不更新數據庫中的值並且沒有錯誤

1,ABC,DEF 
2,GHI,KJL 

create query is CREATE TABLE School(schoolid int,schoolname varchar ,schooltype varchar) 
insert query INSERT INTO School(schoolid,schoolname,schooltype) VALUES (?,?,?) 

分隔的文件我讀值正在發生的事情是,我沒有得到任何錯誤代碼執行成功但沒有到底數據庫值。表是空的。我也使用dbConn.commit()但仍然是空表。請指導。提前致謝。

+0

在調用所有必要的值之前調用'addBatch();'! – jlordo

回答

2

很有可能您的批次小於batchSize,這意味着您永遠不會與pstmt.executeBatch();達到一致,因爲++count % batchSize == 0永遠不會評估爲真。

您可以通過在關閉while循環後立即添加一行pstmt.executeBatch();來輕鬆解決該問題。這樣,任何剩餘的行都不會導致批處理被執行,並且將創建一個新的批處理將在最後執行。

+0

如果CSV文件中存在多行,if條件最終應該變爲true ..從文章看來,CSV看起來有多行。 – sanbhat

+0

「最終會變成真實的」......除非有比batchSize更少的行;在這種情況下,if語句**從不**成爲真,因此該批從未被執行。 – mthmulders

+2

@sanbhat:從帖子看起來像csv有2行,'batchSize'是3 ... – jlordo