知识大全 使用JSP实现简易的SQL报表

Posted 小数

篇首语:明日复明日,明日何其多!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用JSP实现简易的SQL报表相关的知识,希望对你有一定的参考价值。

使用JSP实现简易的SQL报表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  这个内容也是根据企业学员的要求准备的 其实这个小项目是刚毕业时候做的 很多时候我们希望执行下面的SQL/HQL然后得到一个HTML表格输出:

  输入: select ID as 编号 NAME as 姓名 AGE as 年龄 from XXX

  输出:

编号 姓名 年龄        要求是如果SQL变动 仍然要显示出来所有的别名字段信息和数据

  因为现在Hibernate用的比较广泛 所以优先考虑用Hibernate来实现 结果发现如果是实体映射查询语句 可以方便的用:List Query getReturnAliases() 获得别名 然而我们知道查询时有时候语句是很复杂的 不全是HQL 这时候用SQLQuery的时候 惊讶的提示这个方法尚未实现(最新版的Hibernate 是否实现尚未测试) 用的版本是Hibernate 对应的代码是:

  DAO

/** * 根据查询语句返回结果 并包含结果的列名 * @param hql * @param args * @return */public List queryAllForReport( final String hql final Object args)     List list = getHibernateTemplate() executeFind(new HibernateCallback()          public Object doInHibernate(Session session)         throws HibernateException SQLException          Query query = session createQuery(hql);                  for(int i = ; i < args length; i++)              query setParameter(i args[i]);                 

         List list = query list();         list add( query getReturnAliases());                  return list;                 );        // Hibernate做count计算返回一般都是对象        return list;       

  测试代码:

List list = dao queryAllForReport( select id as 编号 name as 登录名 address as 地址 realName from User );

  System out println(list size());

for(Object[] row : list)     for(Object v : row)         System out print(v + \\t );                    System out println();

  最后不得不回到JDBC 用 ResultSet和ResultSetMetaData实现了这个功能 详细代码(自己进行修改即可实现)如下:

﹤%@ page language= java import= java util * java sql * pageEncoding= UTF %﹥﹤%@ taglib prefix= c uri= //java sun /jsp/jstl/core %﹥

﹤!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN ﹥﹤﹥﹤head﹥

﹤title﹥SQL报表﹤/title﹥

﹤meta equiv= pragma content= no cache ﹥﹤meta equiv= cache control content= no cache ﹥﹤meta equiv= expires content= ﹥   

﹤/head﹥

﹤body﹥﹤form action= ﹥﹤textarea name=sql cols= rows= ﹥$param sql﹤/textarea﹥﹤br﹥﹤input type=submit value=查询﹥﹤/form﹥

﹤c:if test= $!empty param sql ﹥

   ﹤%//new oracle jdbc driver OracleDriver();Connection conn = DriverManager getConnection( jdbc:oracle:thin:@ : :xe hr hr );Statement stmt = conn createStatement();ResultSet rs = stmt executeQuery(request getParameter( sql ));

if(rs == null) stmt close();conn close();return;

// 取列名ResultSetMetaData meta = rs getMetaData();int cols = meta getColumnCount();ArrayList colNames = new ArrayList();

for(int i = ; i ﹤= cols; i++) colNames add(meta getColumnLabel(i));

request setAttribute( colNames colNames);%﹥﹤table border=   cellpadding= style= border collapse: collapse;   width= % bordercolor= # align=center ﹥

﹤tr﹥﹤c:forEach items= $colNames var= c ﹥﹤td﹥$c﹤/td﹥﹤/c:forEach﹥﹤/tr﹥

﹤%while(rs next()) colNames clear();

for(int i = ; i ﹤= cols; i++) Object value = rs getObject(i);System out println(value getClass());

// TODO 更多格式化控制if(value instanceof java sql Date) value = rs getTimestamp(i);// 取出精确日期java text SimpleDateFormat df = new java text SimpleDateFormat( yyyy年MM月dd日HH点mm分ss秒EEE );value = df format(value);

if(value instanceof java math BigDecimal) java math BigDecimal v = (java math BigDecimal)value;value = v doubleValue();// 要求输出时候最少显示两位小数 最多输出小数点后 个数java text NumberFormat format = java text NumberFormat getInstance();// 只对小数格式化format setMaximumFractionDigits( );// 最多 位小数format setMinimumFractionDigits( );// 最少 位小数value = format format(value);// ==﹥ String

colNames add(value);

request setAttribute( colNames colNames);

%﹥﹤tr﹥﹤c:forEach items= $colNames var= c ﹥﹤td﹥$c﹤/td﹥﹤/c:forEach﹥﹤/tr﹥﹤%

rs close();stmt close();conn close();%﹥﹤/table﹥﹤/c:if﹥﹤/body﹥﹤/﹥

cha138/Article/program/Java/JSP/201311/20746

相关参考

知识大全 JSP如何防范SQL注入攻击

JSP如何防范SQL注入攻击  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上周给别人做了个网站

知识大全 关于JSP防范SQL注入攻击

关于JSP防范SQL注入攻击  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上周给别人做了个网站

知识大全 JSP中连接SQL 2000数据库的问题总结

JSP中连接SQL2000数据库的问题总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于系

知识大全 实例讲解JSP调用SQL Server的存储过程

实例讲解JSP调用SQLServer的存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  J

知识大全 JSP中调用SQL Server存储过程实例讲解

JSP中调用SQLServer存储过程实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下

知识大全 T-SQL 存储过程创建 PDF 格式文件报表

T-SQL存储过程创建PDF格式文件报表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  This

知识大全 Java/JSP中调用SQL Server存储过程完整示例

Java/JSP中调用SQLServer存储过程完整示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 用 SQL Server从应用程序生成用户友好的报表

用SQLServer从应用程序生成用户友好的报表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 关于日期的sql 做报表的时候可能有用

  得到年月日季度    select  to_char(日期yyyymmdd)DATE_IDto_char(日期yyyy)||年||to_char(日期mm)||月||to_char(日期dd)||

知识大全 地税财务报表在网上申报结束后需要上传吗

地税财务报表在网上申报结束后需要上传吗需要上传,直接在地税网上提交就可以了。地税财务报表:1、《XX省地方税收纳税申报表(简易)》此表适用于缴纳营业税、城建税、教育费附加、带征企业所得税、带征个人所得