下面的代码给出了一个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 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'index(iddocument,chapter,chapterdate)values (44,'Examen; * Verdedigen project','' 附近使用正确的语法
所以似乎在上次更新中我丢失了一些数据。我想写的数据确实存在(我用系统打印线检查过。
任何建议都会更受欢迎。