毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> java技术 >> 正文

java sqlExec判断sql文件是否正确

更新时间:2012-12-3:  来源:毕业论文

java sqlExec判断sql文件是否正确
小弟想用ant的sqlExec来检测多个sql文件的语法和编码是否正确(每个sql文件可能包含多个sql语句),代码如下:
/**
 * 在指定的数据库上执行脚本,
 * @param db
 * @param sqlPath 数据库脚本目录
 * @param fileName 脚本文件名
 * @param logPath 执行结果日志文件,如果为null不记日志
 */
        import org.apache.tools.ant.Project;
        import org.apache.tools.ant.taskdefs.SQLExec;
        import org.apache.tools.ant.types.EnumeratedAttribute;
public boolean judgeScript(String db,String sqlPath,String fileName,String logPath){
if(!(sqlPath.endsWith("/")||sqlPath.endsWith(File.separator))){
sqlPath+=File.separator;
}
SQLExec sqlExec =  new SQLExec();
sqlExec.setDriver(driver);
sqlExec.setUrl(urlPrefix+db);
sqlExec.setUserid(dbUserid);
sqlExec.setPassword(dbPWD);
sqlExec.setDelimiter("GO");
sqlExec.setSrc(new File(sqlPath+fileName));//"continue", "stop"  "abort"
sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute.getInstance(SQLExec.OnError.class, "continue")));
//sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute.getInstance(SQLExec.OnError.class, "abort")));
sqlExec.setAutocommit(true);

if(logPath!=null){
sqlExec.setPrint(true);
if(!(logPath.endsWith("/")||logPath.endsWith(File.separator))){
logPath+=File.separator;
}
sqlExec.setOutput(new File(logPath+ip+"_"+dbPort+"_"+db+"_"+fileName+".log"));
}
sqlExec.setProject(new Project());
try{
sqlExec.execute();
//System.out.println("成功更新"+ip+":"+dbPort+";dbName="+db+"脚本"+fileName);
//updateLog.append("更新"+ip+":"+dbPort+";dbName="+db+"脚本"+fileName+"\n");
return true;
}catch (Exception e){
//updateLog.append("服务器:"+ip+e.getMessage());
System.out.println("更新失败"+ip+":"+dbPort+";dbName="+db+"脚本"+fileName);
return false;
}
}
但这样处理,在异常中没有抓到那些有语法错误和乱码的sql文件,请问大牛们该如何处理
PS:statement的方法就不考虑了,因为还要将sql文件拆分成sql语句,很麻烦

貌似搞定了
//sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute.getInstance(SQLExec.OnError.class, "continue")));
sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute.getInstance(SQLExec.OnError.class, "abort")));
出错了直接中断掉就可以了

根据文档描述,continue也会打印错误的

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。