次のコードはを与えます、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);
}
}
ログに表示されるエラーは次のとおりです。
INFO JdbcLogging:25-Dit trad op bij het uitvoeren van de batchtaak(contactMoments):java.sql.BatchUpdateException:SQL構文にエラーがあります。1行目の「index(iddocument、chapter、chapterdate)values(44、'Examen; * Verdedigenproject'」」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
したがって、前回の更新では、いくつかのデータが欠落しているようです。書き込みたいデータは存在します(システムプリントラインで確認しました)。
どんな提案でも大歓迎です。