代码如下:运行正常但结果集为空,生成的sql直接复制到数据库工具中可以查出结果,求解:
public QueryResult getCoursewareList(int curPage, int pageSize, String courseId, String... type){
String sqlStr = "select a.ID,a.FILE_ID,a.TITLE,b.EXTENSION,b.FILE_SIZE,b.PLAY_URL,b.DOWNLOAD_URL from COURSE_COURSEWARE_NEW a,RESOURCES_MAPPING_NEW b where a.FILE_ID = b.FILE_ID and a.COURSE_ID = b.COURSE_ID and a.COURSE_ID = @courseId";
if(!Lang.isEmpty(type)){
sqlStr = sqlStr + " and b.EXTENSION in(@type)";
}
sqlStr = sqlStr + " order by b.REG_DATE";
Sql sql = Sqls.create(sqlStr);
sql.params().set("courseId", courseId);
if(!Lang.isEmpty(type)){
sql.params().set("type", type);
}
sql.setCallback(Sqls.callback.records());
Pager pager = this.nutDao.createPager(curPage, pageSize);
pager.setRecordCount((int) Daos.queryCount(this.nutDao, sql.toString()));
sql.setPager(pager);
this.nutDao.execute(sql);
return new QueryResult(sql.getList(Record.class), pager);
}
type传数组
来自炫酷的 NutzCN
@wendal 传String[] type也不行,但
if(!Lang.isEmpty(type)){
String types = "";
for(String s: type){
types = types + "'" + s + "',";
}
types = types.substring(0, types.length() - 1);
sqlStr = sqlStr + " and b.EXTENSION in(" + types + ")";
}
就可以拿到。最后执行的sql和传数组的一模一样啊。
@wendal 直接拼入可以拿到结果集,但按参数的方式传拿不到结果集,两者生成的sql都一样,都能在数据库软件中查出正确的结果。求求救
@wendal 版本:Nutz1.r.57,第二条语句是传数组生成的,复制到数据库工具中正确运行并得到正确结果,但程序中却得不到结果集:select a.ID,a.FILE_ID,a.TITLE,b.EXTENSION,b.FILE_SIZE,b.PLAY_URL,b.DOWNLOAD_URL from COURSE_COURSEWARE_NEW a,RESOURCES_MAPPING_NEW b where a.FILE_ID = b.FILE_ID and a.COURSE_ID = b.COURSE_ID and a.COURSE_ID = ? and b.EXTENSION in(?,?) order by b.REG_DATE;
select a.ID,a.FILE_ID,a.TITLE,b.EXTENSION,b.FILE_SIZE,b.PLAY_URL,b.DOWNLOAD_URL from COURSE_COURSEWARE_NEW a,RESOURCES_MAPPING_NEW b where a.FILE_ID = b.FILE_ID and a.COURSE_ID = b.COURSE_ID and a.COURSE_ID = '2010-2011-1-70000212-0' and b.EXTENSION in('txt','pdf') order by b.REG_DATE;
@qq_30fdbc0f 数据带空格之类的问题吧,试试jdbc api去查, 走dao.run方法
来自炫酷的 NutzCN
@wendal 好,谢谢wendal,我试试去