I Работа над проектом Java 1.7 с Mysql,Java-MySQL: Как создать хранимую процедуру
У меня есть метод, который вставить много данных в таблице с PreparedStatement, но это вызовет из памяти Ошибка в сервере GlassFish.
Connection c = null;
String query = "INSERT INTO users.infos(name,phone,email,type,title) "
+ "VALUES (?, ?, ?, ?, ?, ";
PreparedStatement statement = null;
try {
c = users.getConnection();
statement = c.prepareStatement(query);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try{
int i =0;
for(Member member: members){
i++;
statement.setString(1, member.getName());
statement.setString(2, member.getPhone());
statement.setString(3, member.getEmail());
statement.setInt(4, member.getType());
statement.setString(5, member.getTitle());
statement.addBatch();
if (i % 100000 == 0){
statement.executeBatch();
}
}
statement.executeBatch();
}catch (Exception ex){
ex.printStackTrace();
} finally {
if(c != null)
{
try {
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(statement != null){
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
c = null;
statement = null;
}
Я думаю, что мне нужно, чтобы создать хранимую процедуру, чтобы избежать этой проблемы памяти, но я не знаю, с чего начать, и если я должен создать процедуру или функцию, и если я буду в состоянии получить какой-то ответ в ответ или что-то еще?
Что вы думаете об этом?
Как создать хранимую процедуру помощи? Вам необходимо использовать ** транзакцию ** и ** меньшие партии **. –
Попробуйте меньшую партию, а затем загляните в ['try-with-resources'] (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html). – bradimus
Да, попробуйте размер партии '100' или' 200'. Не '10000'. – Kayaman