Я работал над сервлетом, который сгенерирует уникальный код и обновит его в базе данных mySQL.Теперь я хочу перехватить любое исключение на случай, если уникальный код уже существует в таблице mySQL, сгенерировать новый код и попробовать обновить базу данных.Проблема в том, что я хочу сделать это в самом цикле for.Код выглядит следующим образом:
try
{
connection = datasource.getConnection();
SQLUpdate = "INSERT INTO Voucher_dump VALUES( '"+unique_code+"','08-10-2011 04:48:48','0')";
PreparedStatement ps1 = connection.prepareStatement(SQLUpdate);
ps1.executeUpdate();
ResultSet r = ps1.getResultSet(); // this is where I'm checking if it's a duplicate
if(r==null)
out.println("This is a duplicate");
else out.println("Updated");
trial12= "08-10-2011 04:48:480.03999855056924717a";
SQLUpdate = "INSERT INTO Voucher_dump VALUES( '"+trial12+"','08-10-2011 04:48:48','0')";
ps1 = connection.prepareStatement(SQLUpdate);
ps1.executeUpdate();
r = ps1.getResultSet();
if(r==null)
out.println("This is a duplicate");
else out.println("Updated");
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}
Я не хочу ждать до конца всего цикла, чтобы перехватить SQLException (я уже определил этот ключ в mySQL как основной).В тот момент, когда результат возвращается как повторяющаяся запись, я хочу заново сгенерировать этот ключ и повторить попытку обновления. Мой вывод для этого конкретного кода становится пустым на моей выходной странице (все остальные параметры отображаются правильно).Не отображается «Это дубликат» и «Обновляется».Возможно, ResultSet - не лучший способ сделать это.Ребята, не могли бы вы дать мне несколько советов о том, как лучше двигаться вперед?