频道栏目
读书频道 > 软件开发 > JAVA > JasperReports+iReport报表开发详解
3.2.4 使用Parameters对象实现SQL的IN及NOTIN查询
2013-06-04 14:20:24     我来说两句
收藏   我要投稿
本书主要讲解Java技术领域著名的开源报表框架JasperReports和iReport软件的使用,重点介绍如何使用iReport报表模板进行报表的开发。全书共8章:初识JasperReports(介绍如何使用iReport软件搭建报表开发环境);...  立即去当当网订购

JasperReport框架还支持SQL语句中的IN或NOTIN查询,使用如下语法格式:

$X{IN/NOTIN, FieldName, ParametersName}

其中IN或NOTIN是生成的SQL语句,而FieldName是对哪个字段进行IN操作,ParametersName是IN语句使用的查询条件值,此值来自于Parameters对象。

新建报表,添加4个Fields,并拖曳到Detail 1栏中。

设计报表使用的SQL语句,如图3.32所示。
 

3.32  报表使用的SQL语句

 

注意报表使用的SQL语句为大写的IN。

从图3.32中可以看到,操作是IN,查询的字段是username,而且要创建一个名称为inStringArray的Parameters对象,该对象的属性设置如图3.33所示。
 

3.33  inStringArray属性设置

 

新建Web项目, Servlet核心代码如下:

public class test extends HttpServlet

{   public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException

    {   try

        {   ServletOutputStream servletOutputStream = response.getOutputStream();

            InputStream reportStream = getServletConfig().getServletContext()

            .getResourceAsStream("report4.jasper");

            String url = "jdbc:sqlserver://localhost:1079;databaseName=ghydb";

            String username = "sa";

            String password = "";

            String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

            Class.forName(driverName);

              Connection connection=DriverManager.getConnection(url, username,password);

            List inList = new ArrayList();

            inList.add("a");

            inList.add("c");

            HashMap parameters = new HashMap();

            parameters.put("inStringArray", inList);

            JasperRunManager.runReportToPdfStream(reportStream,

            servletOutputStream, parameters, connection);

            response.setContentType("application/pdf");

            servletOutputStream.flush();

            servletOutputStream.close();

        }

        catch (JRException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

        catch (ClassNotFoundException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

        catch (SQLException e)

        {   // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

运行结果如图3.34所示。
 

3.34  运行效果

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.3 使用Parameters动态生成where语句
下一篇:3.3 Variables对象的使用
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站