知识大全 使用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注入攻击 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 上周给别人做了个网站
关于JSP防范SQL注入攻击 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 上周给别人做了个网站
JSP中连接SQL2000数据库的问题总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于系
实例讲解JSP调用SQLServer的存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! J
JSP中调用SQLServer存储过程实例讲解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 下
T-SQL存储过程创建PDF格式文件报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! This
知识大全 Java/JSP中调用SQL Server存储过程完整示例
Java/JSP中调用SQLServer存储过程完整示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 用 SQL Server从应用程序生成用户友好的报表
用SQLServer从应用程序生成用户友好的报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
得到年月日季度 select to_char(日期yyyymmdd)DATE_IDto_char(日期yyyy)||年||to_char(日期mm)||月||to_char(日期dd)||
地税财务报表在网上申报结束后需要上传吗需要上传,直接在地税网上提交就可以了。地税财务报表:1、《XX省地方税收纳税申报表(简易)》此表适用于缴纳营业税、城建税、教育费附加、带征企业所得税、带征个人所得