У меня странная проблема, когда вставка MySQL происходит дважды. Я продолжал сопрягать код до тех пор, пока не получил простейшую версию, но это все еще происходит. Кто-нибудь видел это раньше? Это на сервере Tomcat.
Ниже приведен мой упрощенный код. Когда я запускаю это, в таблице появляются две записи с одинаковым значением. Странно то, что кажется, что вся страница запускается дважды, потому что, если я достаточно быстро выбираю, я вижу первую запись, а через несколько секунд появляется вторая. Когда я ставлю метки времени на строки, они различаются на 1-й sh секунд.
"jdbc:mysql://127.0.0.1/mydatabase",
"myusername",
"mypassword"
);
java.sql.Statement statement = connection.createStatement();;
statement.execute("INSERT INTO tbl_test (Value) VALUES ('Test value')");
%>
Дополнительная информация: Кроме того, если я выполню оператор выбора после вставки и выделю полное содержимое таблицы, только первая запись обнаруживается. Но когда я смотрю в базу данных, есть два входа. Таким образом, вся страница jsp завершает свою работу, а затем снова запускается в фоновом режиме.
Вот расширенная версия кода, которая позволяет выбрать входное значение для базы данных, поэтому вы можете попробовать это на лету и посмотреть, что происходит:
<%
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection connection = java.sql.DriverManager.getConnection(
"jdbc:mysql://***/***",
"***",
"***!"
);
java.sql.Statement statement = connection.createStatement();
String Value = request.getParameter("Value");
statement.execute("INSERT INTO tbl_test (Value) VALUES ('" + Value + "');");
java.sql.ResultSet rs = statement.executeQuery("SELECT * FROM tbl_test;");
while (rs.next()) {
%><%=rs.getString("ID")%>=<%=rs.getString("Value")%><BR><%
}
%>
Вы можете попробовать этот код по адресу: http://familychurch.life/familychurch/test.jsp?Value=Whatever
(Заменить «Что угодно» на значение Вы хотите вставить.)
Запустите его один раз, и вы увидите значение, вставленное один раз. Но запустите его во второй раз, и вы увидите, что введенное ранее значение теперь находится в таблице дважды.