执行SQL脚本工具类

1、引入ant.jar包(在http://ant.apache.org/网站上下载)

使用MAVEN构建项目加入下面依速

<dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>1.7.1</version>

</dependency>

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;
import java.util.UUID;

import org.apache.commons.lang.xwork.StringUtils;
import org.apache.log4j.Logger;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.SQLExec;
import org.apache.tools.ant.types.EnumeratedAttribute;

import com.coship.vasms.core.exception.BusinessException;

/**
 *
 * File Name : SQLScriptUtil.java
 *
 * @Description : sql脚本工具类
 */
public class SQLScriptUtil
{

    private static Logger logger = Logger.getLogger(SQLScriptUtil.class
            .getName());

    /**
     * Description : 执行SQL脚本文件
     *
     * @throws BusinessException
     *
     */
    public static void ExecuteSqlScript(String driverClassName,
            Properties properties, String sqlScript) throws BusinessException
    {
        if (StringUtils.isBlank(sqlScript))
        {
            return;
        }
        try
        {
            ExecuteSql(driverClassName, properties, sqlScript);
        } catch (BuildException e)
        {
            logger.error("sql脚本执行出错!", e);
            // 执行脚本失败
            throw new BusinessException("sql.script.exec.error");
        } catch (IOException e)
        {
            logger.error("sql脚本执行出错!", e);
            // 执行脚本失败
            throw new BusinessException("sql.script.exec.error");
        } catch (SQLException e)
        {
            logger.error("sql脚本执行出错!", e);
            // 执行脚本失败
            throw new BusinessException("sql.script.exec.error");
        } catch (Exception e)
        {
            logger.error("sql脚本执行出错!", e);
            // 执行脚本失败
            throw new BusinessException("sql.script.exec.error");
        }
    }

    private static void ExecuteSql(String driverClassName,
            Properties properties, String sqlScript) throws Exception
    {
        File printFile = null;
        try
        {
            SQLExec sqlExec = new SQLExec();
            // 设置数据库参数
            String url = properties.getProperty("url");
            String user = properties.getProperty("user");
            String password = properties.getProperty("password");
            sqlExec.setDriver(driverClassName);
            sqlExec.setUrl(url);
            sqlExec.setUserid(user);
            sqlExec.setPassword(password);
            // 要执行的脚本
            // srcFile = createTempFileBySqlScript(sqlScript);
            // sqlExec.setSrc(srcFile);
            sqlExec.addText(sqlScript);
            // 有出错的语句该如何处理
            sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute
                    .getInstance(SQLExec.OnError.class, "abort")));
            try
            {
                printFile = File.createTempFile(UUID.randomUUID().toString(),
                        ".log");

            } catch (IOException e)
            {
                printFile = null;
            }
            // 设置是否输出
            sqlExec.setPrint(true);
            // 输出到文件 sql.out 中;不设置该属性,默认输出到控制台
            if (null != printFile)
            {
                sqlExec.setOutput(printFile);
            }
            sqlExec.setProject(new Project());
            sqlExec.execute();
        } finally
        {
            if (null != printFile)
            {
                printFile.deleteOnExit();
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值