建议在jfinal的DbPro.java文件里的第72行,加入如下代码:
if(sql.indexOf("\\?") == -1) {paras = new Object[0];}
理由是:我写的SQL:
String sql = select * from member order by ? desc;
调用分页函数Member.dao.paginate("select * "," from member order by ? desc" , ctime);
代码执行到DbPro.java的72行时,会报bug.代码如下:
72行 dialect.fillStatement(pst, paras);
fillStatement的方法是:因为pst对象里的SQL(select count(*) from member)没有【?】,但是paras的有值length>0,所以会报一个异常:意思是,我没有【?】,所以不需要参数,结果你却给传了参数;
public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {
for (int i=0; i<paras.length; i++) {
pst.setObject(i + 1, paras[i]);
}
}
我给自己项目里加了代码改好了。
项目:JFinal