项目中需要执行 Sql脚本,采用ant来实现,代码如下:
SQLExec sqlExec = new SQLExec();
sqlExec.setDriver(jDriver);
String url;
url = connectDB;
sqlExec.setUrl(url);
sqlExec.setUserid(username);
sqlExec.setPassword(password);
//sqlExec.getProject().set
sqlExec.setSrc(new File(strFullFile));
//sqlExec.set
sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute
.getInstance(SQLExec.OnError.class, "abort")));
sqlExec.setPrint(true);
sqlExec.setProject(new Project());
sqlExec.execute();
log.info("数据库文件" + strFullFile + "更新完成。");
但是,在执行中却遇到问题:sql语句中包含中文时,写入到数据库后中文乱码了。查了api,sqlexec类有一方法 sqlExec.setEncoding("UTF8"); (项目中数据库编码都是使用utf8).问题依然。最后发现是sql文件的问题。sql文件本身保存的时候选择的就是默认的编码ansi。将文件另存为utf-8 编码的文件,问题解决。