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

PreparedStatementを含むJDBCバッチがMySQLで機能しない

    新しいPreparedStatement 各反復で、executeBatch() 最後のPreparedStatementにのみ適用されます 物体。

    さらに、PreparedStatement ?を使用すると、SQLインジェクションを回避するために使用され、値のエスケープが処理されます。 プレースホルダーシステム。

    addBatch()> 使用しているメソッドは、変数パラメーターを操作するためのものです:

    、あなたがやろうとしたような生のクエリではありません(そのためには、 addBatch(java.lang.String query)

    次の例はあなたが望むことをするはずです:

    String[][] data = { { "first", "data" }, { "second", "data" }, { "third", "data" } };
    
    String sql = "insert into abc(col1,col2) values (?, ?)";// use placeholders
    
    PreparedStatement pst = connection.prepareStatement(sql);// create a single statement
    
    for (String[] row : data) {
    
           // set parameters
           pst.setString(1, row[0]);
           pst.setString(2, row[1]);
    
           pst.addBatch();// validate the set
    }
    
    int[] chkSql = pst.executeBatch(); // execute the batch of commands
    //check if chkSql consists of 0..rollback else commit for > 0
    


    1. MySQL列からPHP配列を作成する

    2. パターンに一致する値を含むオブジェクトのJSON配列を検索します

    3. MySQLWorkbenchをフェッチしています...-DBを参照できません

    4. MAX()–MySQLの列の最大値を見つける