以下代碼給出了BatchUpdateException
,我不知道爲什麼。SQL處理中的Java BatchUpdateException
public void createContactmoment(Document document) {
try {
c = MySqlDAOFactory.getInstance().getConnection();
//
c.setAutoCommit(false);
//
String sql = "insert into index(iddocument,chapter,chapterdate)"
+ "values (?,?,?)";
//
prest = c.prepareStatement(sql);
//
int count = 1;
//Formatter for the time
DateTimeFormatter format = DateTimeFormat.forPattern("dd-MM-yyyy");
//
while (count <= Integer.parseInt(document.getTeachingWeeks())
|| count == document.getAllDates().size()
|| count == document.getContactMomentList().size()) {
//
if (MysqlDocumentDAO.getInstance().findByName(
document.getName()) == -1)
return;
//
prest.setInt(1,MysqlDocumentDAO.getInstance().findByName(
document.getName()));
if (document.getContactMomentList().get(count) != null)
prest.setString(2,document.getContactMomentList().get(count));
else
prest.setString(2, "No contactmoment found, but expected");
//
if (document.getAllDates().get(count) != null)
prest.setString(3,(format.print(document.getAllDates().get(count))));
else
prest.setString(3, "Na date found, but expected");
//
prest.addBatch();
//
count++;
}
//
prest.executeBatch();
c.commit();
//
} catch (SQLException e) {
JdbcLogging.info("Dit trad op bij het uitvoeren van de batchtaak (contactMoments)"+ " :" + e);
} finally {
MySqlConnectionFactory.getInstance().closeStatement(prest);
MySqlConnectionFactory.getInstance().closeConnection(c);
}
}
我在日誌中看到的錯誤是:
信息JdbcLogging:25 - 秩繁體運BIJ HET uitvoeren範·德·batchtaak(contactMoments):java.sql.BatchUpdateException:您有一個錯誤在你的SQL語法中;檢查對應於你的MySQL服務器版本使用附近的人指數(iddocument,章,chapterdate)值(44'Examen正確的語法手冊; * Verdedigen工程」,‘’在1號線
所以似乎在最後一次更新我錯過了一些數據。我想寫的數據確實excist(我檢查與系統打印行。
任何建議將是更然後歡迎。
我重命名錶末端重構我的代碼,它的伎倆! –