sql >> データベース >  >> RDS >> Mysql

バッチを使用したJDBCの削除と挿入

    削除部分の場合:

    addBatchを使用してからexecuteBatch:

    Statement st = con.createStatement();
    st.addBatch("DELETE FROM tbl1");
    st.addBatch("DELETE FROM tbl2");
    st.addBatch("DELETE FROM tbl3");
    int[] results = st.executeBatch();
    

    次に、結果には、各テーブルから削除された行数の配列が含まれます。

    挿入の場合:

    これは、JDBCPreparedStatementを介してバッチプロセスでいくつかのレコードを挿入する方法を示す例です。

    dbConnection.setAutoCommit(false);//commit trasaction manually
    
    String insertTableSQL = "INSERT INTO DBUSER"
                + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
                + "(?,?,?,?)";              
    PreparedStatement = dbConnection.prepareStatement(insertTableSQL);
    
    preparedStatement.setInt(1, 101);
    preparedStatement.setString(2, "mkyong101");
    preparedStatement.setString(3, "system");
    preparedStatement.setTimestamp(4, getCurrentTimeStamp());
    preparedStatement.addBatch();
    
    preparedStatement.setInt(1, 102);
    preparedStatement.setString(2, "mkyong102");
    preparedStatement.setString(3, "system");
    preparedStatement.setTimestamp(4, getCurrentTimeStamp());
    preparedStatement.addBatch();
    preparedStatement.executeBatch();
    
    dbConnection.commit();
    

    リソースリンク:

    JDBC PreparedStatementの例–バッチ更新

    更新:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    /** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
    public class PreparedStatementDeleteExample {
        public static void main(String... arg) {
               Connection con = null;
               PreparedStatement prepStmt = null;
               try {
                      // registering Oracle driver class
                      Class.forName("oracle.jdbc.driver.OracleDriver");
    
                      // getting connection
                      con = DriverManager.getConnection(
                                   "jdbc:oracle:thin:@localhost:1521:orcl",
                                   "ankit", "Oracle123");
                      System.out.println("Connection established successfully!");             
    
                      con.setAutoCommit(false); //Now, transactions won't be committed automatically.
    
                      prepStmt = con.prepareStatement("DELETE from EMPLOYEE where ID=? ");
    
                      //1) add set of parameters in PreparedStatement's object - BATCH of commands
                      prepStmt.setInt(1, 7); //substitute first occurrence of ? with 7
                      prepStmt.addBatch();
    
                      //2) add set of parameters in PreparedStatement's object - BATCH of commands                  
                      prepStmt.setInt(1, 8); //substitute first occurrence of ? with 8
                      prepStmt.addBatch();
    
    
                      //Execute PreparedStatement batch
                      prepStmt.executeBatch();
                      System.out.println("PreparedStatement Batch executed, DELETE done");
    
                      con.commit(); //commit all the transactions
    
               } catch (ClassNotFoundException e) {
                      e.printStackTrace();
               } catch (SQLException e) {
                      e.printStackTrace();
               }
               finally{
                      try {
                            if(prepStmt!=null) prepStmt.close(); //close PreparedStatement
                            if(con!=null) con.close(); // close connection
                      } catch (SQLException e) {
                            e.printStackTrace();
                      }
               }
        }
    }
    

    出力:

    Connection established successfully!
    PreparedStatement Batch executed, DELETE done
    

    このチュートリアルでは、PreparedStatementのaddBatch()を使用してDELETEクエリ(DMLコマンド)を実行する方法を学習しました。 およびexecuteBatch() JavaJDBCのメソッド。

    リソースリンク:

    1. JDBCバッチ処理(バッチ挿入、更新、削除)
    2. JDBC- Batch PreparedStatementの例-DELETEクエリを実行します( DMLcommand)JavaでPreparedStatementのaddBatch()メソッドとexecuteBatch()メソッドを使用する



    1. Oracleのvarchar(max)に相当するものは何ですか?

    2. SQLServer2019でのデータベースリカバリの高速化

    3. データリーダーエラーでクエリがありませんを解決する方法は?

    4. JSON_SEARCHとJSON_EXTRACTを組み合わせると、次のようになります。無効なJSONパス式。