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();
}
}
}
}