sql復雜報表
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語句要結合你的表結構來適當調整表名、欄位、和關聯。
希望能幫到你!