SOで同様の回答を確認しましたが、ほとんどの場合、結果セットを使用してエントリがデータベースに既に存在するかどうかを確認することをお勧めします。ここで何が間違っているのかわかりません
public void setMonitorData(String name, monitorData data){
Statement stmt = null;
PreparedStatement stmtInsert;
PreparedStatement stmtUpdate;
ResultSet rs = null;
for(int i = 0; i<data.wiredVector.size(); i++){
if(data.wiredVector.elementAt(i).getInterfaceName().equals(name)){
try{
String checkRecord = "SELECT * FROM list_A WHERE NAME = '" + name + "'";
stmt = conn.createStatement();
rs = stmt.executeQuery(checkRecord);
if(!rs.next()){
String insertData = "INSERT INTO list_A (NAME, mac_add, ip_add, default_gateway,"
+ " net_add, mask, broad_add, max_transfer_rate, curr_transfer_rate,"
+ " curr_used_bandwidth, packet_error_rate )"
+ "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
//preparedStatemend code here....
else{
String update = "UPDATE list_A SET ..."
.....
}
コードを実行した後..データベースには、条件を完全にスキップしたかのように重複したレコードがあります