使用 ScriptRunner "runScript" 方法时,如果一次插入失败则回滚

Rollback if one insert fails, when using ScriptRunner "runScript" method

Connection con = null;
    try {
        con = datasource.getConnection();

        ScriptRunner sr = new ScriptRunner(con);
        Reader reader = new BufferedReader(new FileReader("filePath");
        sr.runScript(reader);

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        if (con!=null) try {con.close();}catch (Exception ignore) {}
    }

以上是我用来执行 SQL 脚本文件的片段。

如果我在脚本中有多个插入,我想在一个事务中执行所有插入,如果其中一个失败,则不应将任何内容写入数据库。

而且我想通过代码而不是脚本来处理这个问题。

通过将 'StopOnError' 参数设置为 true 来实现。

        ScriptRunner sr = new ScriptRunner(con);
        sr.setStopOnError(true);