当前位置:首页 » 编程语言 » sql复杂报表

sql复杂报表

发布时间: 2023-02-21 19:43:40

1. 现有MYsql数据库,如果要制作复杂的EXCEL报表改怎么办

如果你会制作复杂的EXCEL报表,那剩下的问题就是怎样把MYSQL数据库的数据导到EXCEL里了,这一般需要编写一个程序将把MYSQL数据库的数据导到EXCEL里(要是这个程序不会写那就上网搜搜看能不能搜到,或者再发一个问题问,或者请会的人写)。
如果你把MYSQL数据库的数据导到EXCEL里之后还是不会制作复杂的EXCEL报表,那你就要好好学学EXCEL报表的制作了。

2. sql server2008 如何做报表

简单的报表gridview就行了,复杂的可以用Reporting
Service,
图表比较多的可以用Microsoft
Chart
Controls
,也可以用开源的如zedgraph,但是相对MS的就差一些了。

3. 如何解决报表的 SQL 植入风险

SQL 注入或者 SQL 植入是 WEB 应用程序与数据库交互过程中,由于对用户输入数据的合法性、规范性检测做的不严而导致的一种常见的漏洞,这种漏洞如果被攻击者加以利用,在查询语句的结尾添加非法的 SQL 语句,就能进行非法的查询,会导致数据泄露,风险很大

报表应用作为一个 WEB 应用,同样会面临这样的风险

为了解决普通参数查询不灵活,不自由的问题,很多报表工具开放了动态拼 SQL 的功能,允许 SQL 中进行子句替换,类似这样:

SELECT … FROM T WHERE ${w}

w 就是可以根据用户需求随意拼的,比如 data>… AND date<=… AND area=…

这样查询就灵活多了,但是风险也就来了,这个 w 就会有 SQL 注入的隐患,比如:

SELECT … FROM T WHERE 1=0 UNION SELECT … FROM user

这是一句可执行的合法 SQL,但 user 表中的信息就被泄露了

怎么样解决这个问题呢?

1 尽量使用普通的 SQL 参数,不要动态拼 SQL
这样做,虽然灵活度差一点,但安全
有些报表工具不支持普通 SQL 参数,只提供拼 SQL 的方案,方便是方便了,但就要小心了

2 需要通用查询时,写复杂一点的 SQL

比如:

SELECT … FROM T WHERE (${w})

SELECT … FROM T WHERE (${w}) OR ${w}

这样做有一定的效果,但是并不完美,有些时候也防不住,而且 SQL 复杂后,会影响执行效率

3 再检查关键字
通常通用查询的条件不会有这些 select,from 等关键字,所以可以通过过滤这些关键字来防范风险,不让参数中有这些关键字的 SQL 执行,虽然这样做有时候会失去一些灵活性,但是安全性却更高了

润乾报表把这些都做好了,直接用就可以了

我们就以润乾报表为例,来简单看一下实现步骤

部署润乾报表后,在应用目录下找到 **raqsoftConfig.xml ** 文件,配置敏感词列表

属性名:disallowedParamWordList,value 为禁用敏感词列表,多个之间用逗号分隔,英文字母不区分大小写

配置列表以后,如果访问的 URL 中再出现敏感词,就会提示出错了,减少风险的发生

http://localhost:6868/demo/reportJsp/showReport.jsp?rpx=a.rpx&arg2= 华北 union select * from users

是的就这么简单,在一个已经提供了防止 SQL 注入的工具中,就是这么轻松一步设置就可以规避风险了,所以选型的时候,多问问,看看各厂商是否能解决这问题,怎么解决的,否则就得自己去费劲去修补这个漏洞了

更详细的操作以及其他解决方式请参考: 报表的 SQL 植入风险及规避方法 - 乾学院

4. 用SQL查询报表

#我看了你的描述,也没给出表与表之间的关系和字段,以我的理解后,写出以下sql语句,经过测试,可以执行成功
#FeeTable:生活费表包含(学生信息表)也就是外键
#Student:学生信息表包含(班级信息表)也就是外键
#Greade:班级信息表

select
s.nameas学生名称,
g.nameas班级名称,
s.genderas学生性别,
s.teacheras招生老师,
f.liveFeeDateas生活费日期,
f.liveFeeas生活费,
f.sleepFeeDateas住宿费日期,
f.sleepFeeas住宿费,
fareFeeDateas校车费日期,
fareFeeas校车费,
(f.liveFee+f.sleepFee+fareFee)as费用合计
.id=f.studentinnerjoinGreadegons.greade=g.id
groupbys.name,g.name,s.gender,s.teacher,f.liveFeeDate,f.liveFee,f.sleepFeeDate,f.sleepFee,fareFeeDate,fareFee
以上SQL语句要结合你的表结构来适当调整表名、字段、和关联。
希望能帮到你!

热点内容
加密和黎曼猜想 发布:2024-11-08 05:33:08 浏览:419
中央编译出版社一年的销售额 发布:2024-11-08 05:32:15 浏览:561
c语言结构体位域 发布:2024-11-08 05:31:00 浏览:552
androidv7包 发布:2024-11-08 05:26:41 浏览:540
停止共享文件夹脚本 发布:2024-11-08 05:20:54 浏览:39
查看数据库的sid 发布:2024-11-08 05:16:47 浏览:830
菲斯塔dlxdct是哪个配置 发布:2024-11-08 05:06:09 浏览:212
profile怎么配置 发布:2024-11-08 05:06:07 浏览:377
一键安装linux 发布:2024-11-08 05:04:36 浏览:788
lol直播什么配置要求 发布:2024-11-08 05:04:33 浏览:951