eu to usando assim...
criando a tabela:
stmt.execute("CREATE TABLE IF NOT EXISTS `clans` (`id` bigint(20), `tag` varchar(25) NOT NULL, `raw_tag` varchar(25) NOT NULL, `name` varchar(25) NOT NULL, `friendly_fire` int(11) NOT NULL,`founded` bigint NOT NULL, `bank` double(64,2) NOT NULL, PRIMARY KEY (`id`));");
dando insert:
PreparedStatement stmt = connection.prepareStatement("INSERT OR IGNORE INTO clans (tag, raw_tag, name, friendly_fire, founded, bank) VALUES (?, ?, ?, ?, ?, ?)");
stmt.setString(1, clan.getTag());
stmt.setString(2, clan.getRawTag());
stmt.setString(3, clan.getName());
stmt.setInt(4, clan.isFriendlyFire() ? 1 : 0);
stmt.setLong(5, clan.getFounded());
stmt.setDouble(6, clan.getBank());
stmt.execute();
quando eu dou o primeiro insert vai tudo certinho, já no segundo insert os valores do primeiro somem e ele é duplicado