1、引入ant.jar包(在http://ant.apache.org/网站上下载)
使用MAVEN构建项目加入下面依速
org.apache.ant
ant
1.7.1
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(); } } } }