Java:PreparedStatementを使用してMySQLに複数の行を挿入すると、複数のINSERTを1つの操作にバッチ処理できます。ストアドプロシージャの呼び出し、より具体的にはMySQLで同じことができるかどうか疑問に思いました。もしそうなら、どのステートメントクラスが使用されますか?
質問する
6324 次
2 に答える
3
このようなストアドプロシージャがある場合:
JDBC CallableStatement Stored procedure IN parameter example.
CREATE OR REPLACE PROCEDURE insertEMPLOYEE(
e_id IN EMPLOYEE.EMPLOYEE_ID%TYPE,
e_name IN EMPLOYEE.NAME%TYPE,
e_salary IN EMPLOYEE.SALARY%TYPE)
IS
BEGIN
INSERT INTO EMPLOYEE ("EMPLOYEE_ID", "NAME", "SALARY")
VALUES (e_id, e_name, e_salary);
COMMIT;
END;
executeBatch()を使用するだけで、意図したとおりに実行できます。例:
Connection conn = null;
CallableStatement callableStatement = null;
String proc = "{call insertEMPLOYEE(?,?,?)}";
try{
//get connection
conn = JDBCUtil.getConnection();
//create callableStatement
callableStatement = conn.prepareCall(proc);
callableStatement.setInt(1, 7);
callableStatement.setString(2, "Harish Yadav");
callableStatement.setInt(3, 50000);
callableStatement.addBatch();
callableStatement.setInt(1, 8);
callableStatement.setString(2, "Abhishek Rathor");
callableStatement.setInt(3, 50000);
callableStatement.addBatch();
//execute query
callableStatement.executeBatch();
//close connection
callableStatement.close();
conn.close();
System.out.println("Records inserted successfully.");
}catch(Exception e){
e.printStackTrace();
}
于 2019-03-12T07:16:04.187 に答える
2
を使用できますexecuteBatch()
。この例を参照してください
注:ローカルで実行して例を検証していませんが、ドキュメントに従って機能するはずです。
于 2012-12-19T21:54:40.513 に答える