Хранилище базы данных java loop и вызовите его обратно
Когда создается случайная электронная почта и хранится в базе данных mysql, она работает нормально, тогда я пытаюсь распечатать эту случайную электронную почту, но не могу. Кто-нибудь поможет мне, где я могу редактировать свой код? Без ResultSet rs=statement.executeQuery("select * from user_data");
а также System.out.println(rs.getString(1));
его работает нормально
примечание:- кто-то, пожалуйста, отредактируйте мою грамматику
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Random;
public class new_test {
public static void main(String[] args) {
ArrayList<String>objectsToStores = new ArrayList<>();
Random rad = new Random();
for (int j=1; j<=3; j++ )
{
objectsToStores.add("usename"+rad.nextInt()+"@gmail.com");
}
try {
Class.forName("com.mysql.jdbc.Driver") ;
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "");
connection.setAutoCommit(false);
Statement statement = connection.createStatement();
ResultSet rs=statement.executeQuery("select * from user_data");
for (String x : objectsToStores ) {
statement.executeUpdate("INSERT INTO USER_DATA (email) VALUES ('" +x +"')");
}
while(rs.next())
System.out.println(rs.getString(1));
connection.commit();
statement.close();
connection.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
1 ответ
Решение
Проблема была в том порядке, который вы использовали для выполнения запросов к БД. Я просто переместился вниз по строке.
ResultSet rs = statement.executeQuery("select * from user_data");
после
statement.executeUpdate("INSERT INTO USER_DATA (email) VALUES ('" + x + "')");
Это решает проблему, потому что когда вы выполняете UPDATE (второй запрос), ResultSet из SELECT закрывается оператором, поэтому вы не можете выполнить его итерацию и выдает ошибку
try {
// This is not needed anymore with the new driver
//Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "");
connection.setAutoCommit(false);
Statement statement = connection.createStatement();
for (String x : objectsToStores) {
statement.executeUpdate("INSERT INTO USER_DATA (email) VALUES ('" + x + "')");
}
// I just moved this line down
ResultSet rs = statement.executeQuery("select * from user_data");
while (rs.next())
System.out.println(rs.getString(1));
connection.commit();
statement.close();
connection.close();
} catch (Exception e) {
throw new RuntimeException(e);
}