前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 执行sql文件

java 执行sql文件

作者头像
千往
发布2018-04-10 15:21:50
2.5K0
发布2018-04-10 15:21:50
举报
文章被收录于专栏:不想当开发的产品不是好测试

# 背景

用例执行完毕,期望回滚数据,因此希望执行sql来回滚数据

# 步骤

直接show代码,借助的是mybatis的ScriptRunner

代码语言:javascript
复制
/**
     * 执行xx库下的表备份脚本
     *
     * @param tableName
     */
    public static void runSqlInStat(String tableName) {

        String className = Configurations.INSTANCE.get("jdbc.xx.driver");
        String dbUrl = Configurations.INSTANCE.get("jdbc.xx.url");
        String dbUsername = Configurations.INSTANCE.get("jdbc.xx.username");
        String dbPassword = Configurations.INSTANCE.get("jdbc.xx.password");

        try {
            Class.forName(className);
            Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
            ScriptRunner runner = new ScriptRunner(conn);
            runner.setAutoCommit(true);

            String fileName = String.format("src/main/resources/db/%s.sql", tableName);
            File file = new File(fileName);

            try {
                if (file.getName().endsWith(".sql")) {
                    runner.setFullLineDelimiter(false);
                    runner.setDelimiter(";");//语句结束符号设置
                    runner.setLogWriter(null);//日志数据输出,这样就不会输出过程
                    runner.setSendFullScript(false);
                    runner.setAutoCommit(true);
                    runner.setStopOnError(true);
                    runner.runScript(new InputStreamReader(new FileInputStream(fileName), "utf8"));
                    logger.info(String.format("【%s】回滚成功", tableName));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        }

    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 背景
  • # 步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档