次の方法があります。コメントされたメソッドsaveOrUpdateToDatabaseは完全に正常に実行されますが、executeBatchを使用したいと思います。私は何が欠けていますか?executeBatch()の結果を受け取るint[]rは常に空です。
public boolean saveOrUpdate(MonitoredData mData) {
try {
PreparedStatement prep;
String timeID = this.getTimeLastRowID();
for (CpuData o : mData.getCpu()) {
prep = this.conn.prepareStatement(String.format(
INSERT_CPU_USAGE, this.nodeID, timeID, o.toString()));
prep.addBatch();
// saveOrUpdateToDatabase(String.format(INSERT_CPU_USAGE,
// this.nodeID, timeID, o.toString()));
}
for (DiskData o : mData.getDisk()) {
prep = this.conn.prepareStatement(String.format(
INSERT_DISK_USAGE, this.nodeID, timeID, o.toString()));
prep.addBatch();
// saveOrUpdateToDatabase(String.format(INSERT_DISK_USAGE,
// this.nodeID, timeID, o.toString()));
}
for (NetworkData o : mData.getNet()) {
prep = this.conn.prepareStatement(String
.format(INSERT_NETWORK_USAGE, this.nodeID, timeID, o
.toString()));
prep.addBatch();
// saveOrUpdateToDatabase(String.format(INSERT_NETWORK_USAGE,
// this.nodeID, timeID, o.toString()));
}
prep = this.conn.prepareStatement(String.format(
INSERT_MEMORY_USAGE, this.nodeID, timeID, mData.getMem()
.toString()));
// saveOrUpdateToDatabase(String.format(INSERT_MEMORY_USAGE,
// this.nodeID, timeID, mData.getMem().toString()));
conn.setAutoCommit(false);
int[] r = prep.executeBatch();
conn.setAutoCommit(true);
return true;
} catch (SQLException ex) {
Logger.getLogger(HistoricalDatabase.class.getName()).log(
Level.SEVERE, null, ex);
}
return false;
}