列举一下需要的资源: 1、mySql数据库安装好的 2、iReport+jasperreport配置好 3、我用的是Myeclipse,MySQL的驱动jar包不要忘记 第一部分:创建数据库连接 package com.mySqlsource;import java.sql.Connection;public class Database {private String dbUr
列举一下需要的资源:
1、mySql数据库安装好的
2、iReport+jasperreport配置好
3、我用的是Myeclipse,MySQL的驱动jar包不要忘记
第一部分:创建数据库连接
package com.mySqlsource; import java.sql.Connection; public class Database { private String dbUrl = "jdbc:mysql://localhost:3306/bookdb"; private String dbUser="root"; private String dbPwd="123456"; public Database () throws Exception{ Class.forName("com.mysql.jdbc.Driver"); } public Connection getConnection()throws Exception{ return java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd); } public void closeConnection(Connection con){ try{ if(con!=null) con.close(); }catch(Exception e){ e.printStackTrace(); } } }这个格式基本都一样的,其中bookdb是我新建数据库的名称,getConnection和closeConnection是两个操作开关,在使用的时候直接新建Database对象调用就好了。
第二部分:先看看我的数据库books表
打开iReport新建一张表不懂的话去看其他人的博客,很多的。在界面上找到数据源打开进行如下选择
这个应该很简单的,设置完之后点击Test会提示测试成功,否则就是你的某些设置没做好,再重新检查一遍
打开组件面板找到拖动到任意bands中,在iReport4.6.0中有一部分表格是有想到的,一部分没有,这个倒没关系了有的话一路next下去
没有的话直接完成后在图表上面右键选择chart data;点击Details,
这里是有默认名称的,双击默认名称打开属性设置界面
关于各个字段的意思及作用,我之前的文章有写到过,这里就不在赘述,有需要的话就翻翻前面的好了。
设置好之后,点击预览会出现如下情况
原因是在设计面板右侧图表的属性一栏,有一个属性Evaluation Time,大致意思就是什么时候进行更新数值,它默认是NOW
在这种情况下,只有你放在detail bands才会出现,但是它会出现很多次,不是我们想要的。将它设置为report就是在报表数据配置好之后进行更新,再次预览
第三部分:做好了这一步之后,对于可以连接数据库的人来说已经够了,但是如果想要通过web动态生成客户想要的报表呢,那么我们还是要通过网络连接数据库,之后再动态我们需要的模板
我使用Myeclipse+tomcat做的网站
package com.mySqlsource; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.http.*; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.util.JRLoader; public class MySqlSource extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub try{ String root_path=this.getServletContext().getRealPath("/"); root_path=root_path.replace("\\", "/"); String file_path=root_path+"chart/test_char.jasper"; Database data=new Database(); Connection con=data.getConnection(); JasperReport report= (JasperReport)JRLoader.loadObject(file_path); JasperPrint print=JasperFillManager.fillReport(report, null, con); data.closeConnection(con); OutputStream ouputStream = resp.getOutputStream(); resp.setContentType("application/pdf"); resp.setCharacterEncoding("UTF-8"); resp.setHeader("Content-Disposition", "attachment; filename=\""+ URLEncoder.encode("PDF报表", "UTF-8") + ".pdf\""); // 使用JRPdfExproter导出器导出pdf JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); exporter.exportReport(); ouputStream.close(); }catch(Exception e){ e.printStackTrace(); } } }文件列表
test_char.jasper(本来想是test_chart.jasper后来发现创建时候少打了一个字母)是iReport预览编译之后生成的,在你的创建目录中找得到
代码很简单,关键的几个函数:
JasperReport report= (JasperReport)JRLoader.loadObject(file_path); JasperPrint print=JasperFillManager.fillReport(report, null, con); <pre name="code" class="html"> JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);这几个函数在之前的文章中也提到过,所以不再啰嗦。
特别注意:要将jasperreport的lib文件最好是都放到web项目的WEB-INF/lib目录下,生的报错
如果需要源码,留邮箱,希望能共同探讨

InnoDB使用redologs和undologs确保数据一致性和可靠性。1.redologs记录数据页修改,确保崩溃恢复和事务持久性。2.undologs记录数据原始值,支持事务回滚和MVCC。

EXPLAIN命令的关键指标包括type、key、rows和Extra。1)type反映查询的访问类型,值越高效率越高,如const优于ALL。2)key显示使用的索引,NULL表示无索引。3)rows预估扫描行数,影响查询性能。4)Extra提供额外信息,如Usingfilesort提示需要优化。

Usingtemporary在MySQL查询中表示需要创建临时表,常见于使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通过优化索引和重写查询避免其出现,提升查询性能。具体来说,Usingtemporary出现在EXPLAIN输出中时,意味着MySQL需要创建临时表来处理查询。这通常发生在以下情况:1)使用DISTINCT或GROUPBY时进行去重或分组;2)ORDERBY包含非索引列时进行排序;3)使用复杂的子查询或联接操作。优化方法包括:1)为ORDERBY和GROUPB

MySQL/InnoDB支持四种事务隔离级别:ReadUncommitted、ReadCommitted、RepeatableRead和Serializable。1.ReadUncommitted允许读取未提交数据,可能导致脏读。2.ReadCommitted避免脏读,但可能发生不可重复读。3.RepeatableRead是默认级别,避免脏读和不可重复读,但可能发生幻读。4.Serializable避免所有并发问题,但降低并发性。选择合适的隔离级别需平衡数据一致性和性能需求。

MySQL适合Web应用和内容管理系统,因其开源、高性能和易用性而受欢迎。1)与PostgreSQL相比,MySQL在简单查询和高并发读操作上表现更好。2)相较Oracle,MySQL因开源和低成本更受中小企业青睐。3)对比MicrosoftSQLServer,MySQL更适合跨平台应用。4)与MongoDB不同,MySQL更适用于结构化数据和事务处理。

MySQL索引基数对查询性能有显着影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL学习路径包括基础知识、核心概念、使用示例和优化技巧。1)了解表、行、列、SQL查询等基础概念。2)学习MySQL的定义、工作原理和优势。3)掌握基本CRUD操作和高级用法,如索引和存储过程。4)熟悉常见错误调试和性能优化建议,如合理使用索引和优化查询。通过这些步骤,你将全面掌握MySQL的使用和优化。

MySQL在现实世界的应用包括基础数据库设计和复杂查询优化。1)基本用法:用于存储和管理用户数据,如插入、查询、更新和删除用户信息。2)高级用法:处理复杂业务逻辑,如电子商务平台的订单和库存管理。3)性能优化:通过合理使用索引、分区表和查询缓存来提升性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版