前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇sql語言范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:多語言 數(shù)據(jù)抽取 對應(yīng)關(guān)系
中圖分類號:TP301.6 文獻標(biāo)識碼:A 文章編號:1674-098X(2017)02(c)-0153-02
目前,數(shù)據(jù)庫在全世界范圍內(nèi)都得到了非常廣泛的應(yīng)用,但數(shù)據(jù)庫的使用和顯示語言并沒有得到有效的統(tǒng)一。在日常工作中,一個國家的公司可能與另一個國家的公司合作做項目。但是兩個不同語言國家的公司合作,語言的轉(zhuǎn)換就成了一個需要考慮的問題。
從圖1我們可以看出,該軟件無論是登錄界面還是數(shù)據(jù)抽出的界面都是由日語的字段組成。其中包含了如:ロット番號、得意先コ`ド等字段。因此,如果兩個不同國家的人合作,若都用自己本國語言來進行一些數(shù)據(jù)操作,則對項目后期的合成帶來不便;若只用一國的語言,那么對另一個國家的工作人員來說有極大的語言障礙。文章將提出基于sql 的數(shù)據(jù)語言轉(zhuǎn)換方法,以便讓不同母語的人在應(yīng)用的時候,能夠克服語言障礙。
1 相關(guān)工作
目前,實現(xiàn)數(shù)據(jù)庫的多語言轉(zhuǎn)換的方法主要是兩種:(1)使用配置文件;(2)使用第三方語言控件。但是使用這類方法存在一些不足之處,使用配置文件很容易使用戶的資料和設(shè)置破損;而用第三方語言控件則需輸入大量數(shù)據(jù),載入速度大大變慢,編譯效率降低。
因此在面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)上,借鑒多語言切換方案,轉(zhuǎn)換方案思路如圖3所示。
如圖2可知,該方案是將多語言數(shù)據(jù)輸入數(shù)據(jù)庫,縮短對可執(zhí)行文件的長度,大大提高系統(tǒng)啟動速度,并且保證數(shù)據(jù)不丟失,從而實現(xiàn)軟件界面的多語言轉(zhuǎn)換。
運用該思路,也可將所需要用的軟件的語言進行切換:初始是日語,切換成功后,則接下來可用中文進行操作。若是操作完成后,如有需要,可按原方法再重新切換回來。
2 數(shù)據(jù)語言的轉(zhuǎn)換
2.1 不同語言的數(shù)據(jù)間對應(yīng)
對于原先保存在數(shù)據(jù)庫中的數(shù)據(jù),其語言已經(jīng)固定。比如原來的數(shù)據(jù)是日語,那么抽出來的也是日語。那么現(xiàn)在在前臺調(diào)用的人員想看到中文的數(shù)據(jù),則需要事先對數(shù)據(jù)進行轉(zhuǎn)換。
首先查找出原日語數(shù)據(jù)庫中的主要數(shù)據(jù)項目名(可根據(jù)一些列名或者標(biāo)題名來查找)。
再創(chuàng)建語言之間的對應(yīng)關(guān)系表,如表1所示。根據(jù)數(shù)據(jù)中的字段制定上述關(guān)系對應(yīng)列表,并給予編號1、2、3......一個編號(key)對應(yīng)一組關(guān)系。在調(diào)用的時候,即可根據(jù)編號將日文對應(yīng)的中文字段抽調(diào)出來。
2.2 含相同字段間不同語言切換
在一些主要字段中,可直接采用關(guān)系對應(yīng)表的方式進行轉(zhuǎn)換。但是考慮到一些字段會反復(fù)出現(xiàn),或是許多字段有重復(fù)的部分,則可建立不同和相同字段間的映射關(guān)系,如圖4所示。
如圖3可知,用戶要查找有關(guān)“商品コ`ド”(日文)的數(shù)據(jù),但“商品”(日文)這個字段在其他字段中反復(fù)出現(xiàn),因此可以通過該字段同時抽取其他含有該字段的項目名。
3 數(shù)據(jù)多語言的抽取
3.1 數(shù)據(jù)抽取思路
在抽取前首先要增加兩個語言控件,分別為日文、中文。當(dāng)用戶在前臺選擇“中文”控件的時候,中文稻菹允境隼矗選擇“日文”的時候,日文數(shù)據(jù)顯示出來。
下面是數(shù)據(jù)抽取整體思路:(以“商品コ`ド”為例)
TextBox
String
商品コ`ド
商品コ`ド 3 INNER JOIN 商品中文 JBT ON
3.商品コ`ド=JBT.商品代碼
3.2 數(shù)據(jù)抽取結(jié)果
利用上述思路,先從數(shù)據(jù)庫中抽取日文數(shù)據(jù),然后再從相應(yīng)的中文表中抽取中文數(shù)據(jù),抽取結(jié)果如圖4所示。
由圖4可得,左側(cè)原數(shù)據(jù)是日文版的,經(jīng)轉(zhuǎn)換后可得右側(cè)中的中文數(shù)據(jù),“ロット番號、ステントI部”等字段,均已經(jīng)顯示為中文的“批號、支架營業(yè)部”等,這樣就方便了不同語言的用戶查看數(shù)據(jù)。
4 結(jié)語
文章提出了一種基于SQL Server的數(shù)據(jù)語言轉(zhuǎn)換方法。該方法首先查找出原日語數(shù)據(jù)庫中的主要數(shù)據(jù)項目名,根據(jù)這些項目名建立相應(yīng)的對應(yīng)關(guān)系表,再找出含有相同字段的項目名,建立多個對應(yīng)關(guān)系表。然后,建立兩個語言的控件,并通過選擇相應(yīng)的編號(key)來抽出相應(yīng)的數(shù)據(jù),從而顯示不同語言下的數(shù)據(jù),方便了不同語言的用戶查看數(shù)據(jù)。
參考文獻
[1] 楊永國.基于SQL Sever數(shù)據(jù)庫技術(shù)的多語言轉(zhuǎn)換[J].硅谷,2013(1):31-32.
[2] 李興原,丁剛.基于SQL Sever數(shù)據(jù)庫技術(shù)的多語言轉(zhuǎn)換[J].合作經(jīng)濟與科技,2008(12):46-47.
[3] 王芳.SQL Server的數(shù)據(jù)轉(zhuǎn)換[J].現(xiàn)代企業(yè)教育,2014(12):489-489.
[4] 易國洪.對象和對象-關(guān)系DBMS[J].科技廣場,2007(1):85-88.
[5] 劉曉娟.關(guān)系數(shù)據(jù)庫運用分析[J].黑龍江科技信息,2008(4):60-60.
[6] 黃銳.SQL Server對XML文檔的數(shù)據(jù)抽取方法的分析與實現(xiàn)[J].桂林航天工業(yè)學(xué)院學(xué)報,2006,11(2):24-25.
關(guān)鍵詞:SQL語言;可視化;對比教學(xué)方法
中圖分類號:G642 文獻標(biāo)識碼:B
1引言
在數(shù)據(jù)庫技術(shù)飛速發(fā)展的今天,Visual FoxPro作為優(yōu)秀的小型數(shù)據(jù)庫管理系統(tǒng),因其具有操作界面友好、功能強大、語言精煉、簡單易學(xué)、便于實現(xiàn)應(yīng)用系統(tǒng)的快速開發(fā)等特點,仍然受到眾多用戶的青睞。由于Visual FoxPro自身的特點和作為各類計算機等級考試的一個方向,在很多高等院校,都將“Visual FoxPro程序設(shè)計”作為非計算機專業(yè)綜合學(xué)習(xí)數(shù)據(jù)庫技術(shù)和高級程序設(shè)計語言的一門課程。
“Visual FoxPro程序設(shè)計”課程中的一個重要的內(nèi)容是數(shù)據(jù)的查詢,通過執(zhí)行SQL語句、運行查詢文件、運行視圖文件三種方式都可以對數(shù)據(jù)進行查詢。而其中SQL的兩種使用方法:交互式查詢和宿主式查詢,既適合于非計算機專業(yè)人員又適合于軟件開發(fā)人員學(xué)習(xí),使SQL查詢得到廣泛的應(yīng)用。在“Visual FoxPro程序設(shè)計”課程中,SQL語言的教學(xué)既是一個重點又是一個難點。其難點主要在于:非計算機專業(yè)的學(xué)生從開始接觸到計算機操作時,主要使用的是圖形界面的操作方式,對于使用命令的操作方式非常生疏,學(xué)習(xí)起來非常困難。而SQL語言主要是由命令及參數(shù)組成,掌握不好命令及參數(shù)的使用就不能正確執(zhí)行查詢、得到結(jié)果。特別是SQL語言中的數(shù)據(jù)查詢,雖然只有一條SELECT語句,但是該語句卻實現(xiàn)了數(shù)據(jù)庫的核心操作,是用途最廣泛的一條語句,具有靈活的使用方法和豐富的功能。熟練地掌握這條命令的使用不僅能在Visual FoxPro中以交互式方式和程序方式方便地進行各種數(shù)據(jù)查詢,而且為進一步學(xué)習(xí)使用其他數(shù)據(jù)庫管理系統(tǒng)的知識和操作打下一個良好的基礎(chǔ)。
2VF中三種查詢方式
從“Visual FoxPro程序設(shè)計”課程的教學(xué)實踐中可以感受到,學(xué)生對可視化的操作環(huán)境和操作方法比較容易接受。而Visual FoxPro中提供了眾多的設(shè)計器都是一種可視化工具,利用它們可以快捷地創(chuàng)建和修改應(yīng)用系統(tǒng)中的各種組件,包括數(shù)據(jù)庫、數(shù)據(jù)表、查詢、表單和報表等。在Visual FoxPro,創(chuàng)建查詢使用三種方法:查詢向?qū)?、查詢設(shè)計器和SQL的SELECT語句,不管是使用查詢向?qū)н€是使用查詢設(shè)計器創(chuàng)建查詢,其最終都是要生成一條SQL的SELECT語句,查詢向?qū)Ш筒樵冊O(shè)計器在本質(zhì)上是SQL的SELECT語句的可視化設(shè)計方法。在SQL語言中,數(shù)據(jù)的查詢是通過下列一條語句實現(xiàn)的:
SELECT [ALL/DISTINCT];
[TOP [PERCENT]][.][AS ];
[,[][AS ]…];
FROM [][,[]…];
[INNER/LEFT/RIGHT/FULL JOIN [] [ON …]];
[[INTO ]/[TO FILE /TO PRINTER/TO SCREEN]];
[WHERE [AND …];
[AND/OR[AND/OR…]]];
[GROUP BY [,…]][HAVING ];
[ORDER BY [ASC/DESC][,[ASC/DESC]…]]
在這條SELECT語句中,有很多參數(shù),使用這些參數(shù),可以確定參加查詢的數(shù)據(jù)表及其聯(lián)接的條件;獲取相關(guān)的字段和字段的表達式;篩選出滿足條件的記錄;對記錄進行分組和排序等操作。而在查詢設(shè)計器中是通過添加數(shù)據(jù)
表,設(shè)置字段、聯(lián)接、篩選、排序依據(jù)、分組依據(jù)、雜項選項卡中的內(nèi)容來實現(xiàn)的,其中每一個選項卡實際上都對應(yīng)了SELECT語句中的一個或幾個參數(shù)的功能。見表1。
3對比教學(xué)方法實例
由于在查詢設(shè)計器中提供了查看SQL語句的功能,通過上述查詢設(shè)計器中的選項與SELECT語句及參數(shù)的對比,加上學(xué)生對查詢設(shè)計器比較容易掌握這一特點,這就為我們提供了一個可視化的SQL語言對比教學(xué)方法。本文將以一個實例(參考文獻[2])來說明這種教學(xué)方法的應(yīng)用。
在實例中用到兩個數(shù)據(jù)表:學(xué)生登記表(學(xué)號,姓名,性別,出生日期,入校總分)、學(xué)生成績表(學(xué)號,課程編號,成績),要求建立一個包含有“姓名、年齡、平均分、總分”的男生成績查詢,要求查詢結(jié)果中只包含平均分在75分以上的學(xué)生,并按總分降序排列,輸出前3名學(xué)生成績查詢結(jié)果。這是一個比較復(fù)雜的查詢,幾乎涵蓋了SELECT 命令的所有參數(shù),具有比較典型的代表性,其SQL命令如下:
SELECT TOP 3 學(xué)生登記表.姓名;
YEAR(DATE())-YEAR(學(xué)生登記表.出生日期)AS年齡;
AVG(學(xué)生登記表.成績)AS 平均分, SUM(學(xué)生登記表.成績)AS 總分;
FROM 學(xué)生登記表, 學(xué)生成績表 WHERE 學(xué)生登記表.學(xué)號=學(xué)生成績表.學(xué)號 AND 學(xué)生登記表.性別=”男”;
GROUP BY 學(xué)生登記表.學(xué)號 HAVING 平均分>=75;
ORDER BY 總分 DESC
如果使用查詢設(shè)計器,要通過一系列步驟來實現(xiàn)查詢。首先要加入兩個表,并確定兩表的聯(lián)接條件,通過表達式生成新的字段:年齡、平均分和總分;篩選出性別為男記錄;以學(xué)號進行分組,提取平均分在75分以上的記錄,再按總分進行降序排列,最后取出前3條記錄。使用查詢設(shè)計器來完成上述查詢,雖然操作步驟較多,但是相對于SQL命令來說,比較直觀,學(xué)生理解更容易。本文介紹的對比教學(xué)方法的要點是:在查詢設(shè)計器中的每一步操作后,通過使用主窗口的查詢菜單中的“查看SQL”命令或在查詢設(shè)計器中使用快捷菜單中的“查看SQL”命令,可查看到系統(tǒng)生成的相應(yīng)的SQL命令,隨著查詢設(shè)計器的分步操作的進行,可使學(xué)生觀察到一個完整的SELECT語句的實現(xiàn)過程。本實例的教學(xué)過程如下:
第一步,打開查詢設(shè)計器,加入學(xué)生登記表和學(xué)生成績表,在“聯(lián)接”選項卡中,確認其兩表的聯(lián)接條件。第二步,在“字段”選項卡中選取“姓名”字段,再通過“函數(shù)和表達式”生成器生成“年齡”、“平均分”和“總分”字段。前二步的操作結(jié)果見圖1。在圖1中,選取菜單“查詢/查看SQL”,可見到上述操作已生成對應(yīng)的SQL語句,如圖2。在圖2中,前3行是選取和生成的四個字段,后2行是兩表的聯(lián)接及聯(lián)接條件。其聯(lián)接條件也可寫成:
FROM學(xué)生登記表,學(xué)生成績表 WHERE 學(xué)生登記表.學(xué)號=學(xué)生成績表.學(xué)號
第三步,在“篩選”選項卡中,生成如圖3所示的篩選條件。同時在SQL語句窗口中可以看到增加了一個參數(shù)選項,見圖4中第6行。第四步,在“分組依據(jù)” 選項卡中,選取分組字段,并生成如圖5所示的分組后要滿足的條件。這時,相應(yīng)的在SQL語句窗口,又增加了一個參數(shù)選項,見圖6中第7行和第8行。
第五步,在“排序依據(jù)”選項卡中,確定如圖7所示的“排序條件”和“排序選項”。在SQL語句又增加了一個參數(shù)選項,見圖8中第9行。其中的4表示第4個字段,
既“總分”字段,該參數(shù)也可寫為:ORDER BY 總分 DESC最后,在“雜項”選項卡中,確定滿足上述條件的前3條記錄,如圖9所示。在SQL語句窗口中,可以看見,在第一行中,又添加了一個參數(shù)TOP3。至此,一個完整的SQL語句已經(jīng)生成,見圖10。通過運行,可以得到正確的查詢結(jié)果。
4結(jié)束語
本文實例中的查詢,幾乎涉及到SQL查詢語句的所有參數(shù),如果直接采用SQL語言進行教學(xué),學(xué)生接受起來很困難,而用查詢設(shè)計器這種可視化的方式進行對比教學(xué),雖然步驟比較多,但學(xué)生接受起來相對容易。通過使用查詢設(shè)計器和SQL語言進行可視化的對比教學(xué)方式,使學(xué)生既學(xué)會了查詢設(shè)計器的使用,更重要的是很直觀、很容易地掌握了SQL語言中各種參數(shù)的正確使用,作者經(jīng)過多次的教學(xué)實踐,取得了良好的教學(xué)效果。
參考文獻:
[1] 杜小丹,劉容. Visual FoxPro程序設(shè)計教程[M]. 北京:高等教育出版社,2007.
[2] 劉容,杜小丹. Visual FoxPro程序設(shè)計上機實驗及習(xí)題集[M]. 北京:高等教育出版社,2007.
An SQL Language Teaching Application of a Visual Comparison Method in VF Teaching
LIU Rong
(Chengdu university, Chengdu 610106, China)
關(guān)鍵詞:報表服務(wù);SQL2005;報表參數(shù);RDL
中圖分類號:TP391文獻標(biāo)志碼:A文章編號:1009-3044(2008)12-20ppp-0c
The Research and Implementation of the enterprise Report System Based on SQL2005
HAN Min, YOU Feng, ZHAO Heng-yong
(College of Information Science and Technology, Beijing University of Chemical Technology, Beijing 10029, China)
Abstract:Introduced the characteristic of SQL Server 2005 reporting services. Integrate the demand of enterprise report, uses the method of modifying the RDL document and processing the data of reporting services, giving an example of using Reporting Service of SQL Server2005 to realize dynamic display Web user-defined report under the VS environment.
Key words:Report service; SQL2005; Report Parameter; RDL
1 引言
隨著Internet的發(fā)展,企業(yè)級應(yīng)用軟件逐漸由C/S結(jié)構(gòu)轉(zhuǎn)向B/S結(jié)構(gòu),企業(yè)管理信息系統(tǒng)正逐步由傳統(tǒng)的客戶端/服務(wù)器模式向Internet轉(zhuǎn)移,作為其輸出展現(xiàn)端,越來越多的報表將在Web 環(huán)境下開發(fā)和應(yīng)用[1]。在企業(yè)級的報表解決方案中,不少開發(fā)人員采用集成于Visual Studio中的Crystal Report (水晶報表)工具實現(xiàn),但水晶報表作為第三方開發(fā)組件,對其應(yīng)用時需要編寫大量的程序且部署復(fù)雜。由于SQL Server的Reporting Services(報表服務(wù))采用集中存儲和管理報表、設(shè)置策略以確保對報表及文件夾的安全訪問、控制處理和分發(fā)報表的方式,使在企業(yè)業(yè)務(wù)中使用報表的方式標(biāo)準(zhǔn)化,并且報表服務(wù)使報表的設(shè)計生成更加容易,具有和Visual Studio集成性好,易于部署,用戶的個性化設(shè)置靈活的特性,本文提出利用SQL 2005中的Reporting Service 實現(xiàn)企業(yè)報表系統(tǒng)的解決方案。
2 Reporting Service簡介
Reporting Services是微軟在2003年作為SQL Server2000產(chǎn)品套件的一部分的,2005年在SQL Server2005中進行了擴展。SQL Server報表服務(wù)是一種基于服務(wù)器的新型報表平臺,該平臺構(gòu)建在 .NET Framework 2.0 上并與 SQL Server 2005集成在一起,可用于創(chuàng)建和管理包含來自關(guān)系數(shù)據(jù)源和多維數(shù)據(jù)源數(shù)據(jù)的表格報表、矩陣報表、圖形報表和自由格式報表,可以通過基于 Web 的連接來查看和管理創(chuàng)建的報表,可以使用一個擴展的基于 Web服務(wù)的 API 將豐富的報表生成功能集成到應(yīng)用程序中,因此,Reporting Services 是在各種企業(yè)報表開發(fā)環(huán)境中生成報表的極佳工具。
2.1 RDL
SQL Server2005報表服務(wù)定義了一個XML標(biāo)準(zhǔn)RDL(報表定義語言),是一種公開的XML定義報表的格式,因此,可以通過直接編寫和修改RDL或者創(chuàng)建自定義工具生成相應(yīng)的報表格式,滿足用戶對報表的自定義的需求,達到對報表服務(wù)的靈活性擴展。在SQL Server或VS2005環(huán)境中,可以使用圖形化的制作工具編輯RDL文件。
2.2 Reporting Service的報表設(shè)計工具
Reporting Service包括兩個報表設(shè)計工具:報表生成器和報表設(shè)計器。在企業(yè)級報表系統(tǒng)的應(yīng)用中可針對不同的報表需求,選擇相應(yīng)的報表設(shè)計工具。
報表生成器是一個在互聯(lián)網(wǎng)上的Windows客戶端應(yīng)用程序,可以基于報表模型生成報表,報表生成器使用了智能客戶端技術(shù),在不必了解基礎(chǔ)數(shù)據(jù)庫、報表定義及Reporting Service存儲報表的方式情況下,可以使用報表模型實時生成報表。
報表設(shè)計器是一種用于創(chuàng)建和報表定義的工具。通過報表設(shè)計器可以訪問所有報表定義功能。報表設(shè)計器提供了圖形化的設(shè)計界面,可以在其中定義數(shù)據(jù)源和查詢信息,利用其提供的報表項進行報表格式的設(shè)計,添加要顯示的數(shù)據(jù)源字段。在報表設(shè)計器中通過對相應(yīng)的報表項設(shè)置不同數(shù)據(jù)來源參數(shù)的方式,實現(xiàn)用戶自定義報表格式和對報表數(shù)據(jù)的動態(tài)查詢。
2.3 報表管理器
在SQL Server2005報表服務(wù)中,報表管理器是包含于報表服務(wù)中的一個基于Web 的管理應(yīng)用程序,它使用和Web 服務(wù)API的報表服務(wù)器的界面創(chuàng)建。報表管理器應(yīng)用程序駐留在Web 服務(wù)器上并且為Web 瀏覽器訪問,為報表服務(wù)器數(shù)據(jù)庫中的內(nèi)容提供一個管理界面,在報表管理中可以完成用戶對報表訪問的安全設(shè)置、站點設(shè)置、文件夾的處理、報表屬性設(shè)置及報表數(shù)據(jù)源的處理等應(yīng)用??梢酝ㄟ^報表服務(wù)自身提供的報表服務(wù)器的URL訪問報表管理器頁面,實現(xiàn)企業(yè)級報表的Web 管理,也可以通過創(chuàng)建一個利用相同報表服務(wù)Web 服務(wù)API的應(yīng)用程序來創(chuàng)建企業(yè)要求的自定義的報表管理器[2]。
3 企業(yè)報表系統(tǒng)的方案設(shè)計及實現(xiàn)原理
3.1 企業(yè)報表系統(tǒng)的實現(xiàn)技術(shù)。
為了滿足企業(yè)級Web 報表系統(tǒng)的性能需求,其技術(shù)方案如圖1所示:
3.2 企業(yè)報表系統(tǒng)實現(xiàn)原理
為了實現(xiàn)自定義報表,本文設(shè)計了基于 和SQL Server報表服務(wù)2005的Web 自定義報表模型:建立報表格式信息數(shù)據(jù)庫和報表數(shù)據(jù)信息數(shù)據(jù)庫,通過訪問數(shù)據(jù)庫。報表數(shù)據(jù)采用 DataSet作為數(shù)據(jù)源綁定,根據(jù)SQL Server報表服務(wù)2005提供的數(shù)據(jù)處理接口在Visual Studio2005中編寫代碼實現(xiàn)數(shù)據(jù)集的動態(tài)綁定[3]。對SQL Server報表服務(wù)2005進行參數(shù)設(shè)置實現(xiàn)報表格式的自定義。首先,在根據(jù)企業(yè)的應(yīng)用需求確定報表表格的自定義參數(shù),即對報表服務(wù)的報表項(表、文本框、列表、圖像和矩形等)建立參數(shù)表;其次,對報表的數(shù)據(jù)處理進行擴展應(yīng)用,根據(jù)查詢排序等設(shè)置從數(shù)據(jù)庫中提取數(shù)據(jù),動態(tài)生成DataSet數(shù)據(jù)源,在中,將 DataSet 動態(tài)綁定到報表顯示控件ReportView; 最后,在中,對ReportView控件編寫代碼實現(xiàn)對SQL 2005的報表服務(wù)的訪問。實現(xiàn)原理如圖2所示。下面結(jié)合實例講解企業(yè)自定義報表的實現(xiàn)。
3.3 報表格式的自定義
SQL Server報表服務(wù)2005的報表模板格式的自定義可以由以下兩種方式實現(xiàn)。第一種是在報表服務(wù)外部,通過XML文檔的修改實現(xiàn)報表的自定義,此方式對熟悉XML語言的用戶適用。第二種方式針對不熟悉報表開發(fā)環(huán)境的一般用戶,通過選擇相關(guān)報表格式參數(shù)的方式實現(xiàn)報表模板格式的自定義。
修改XML 文檔實現(xiàn)報表的自定義,可以在Visual Studio 環(huán)境下選擇SQL Server Business Intelligence Development Studio,通過創(chuàng)建報表項目在報表設(shè)計器窗體以圖形化界面的方式對報表模板進行定義,或者選擇報表向?qū)У姆绞酵瓿蓪蟊砟0宓亩x。由于定義報表的RDL文件是一個XML文檔,該XML文檔具有報表所有屬性的標(biāo)記選項卡的標(biāo)準(zhǔn)定義,報表設(shè)計元素的屬性值可以用一個文本編輯器修改,因此可以在報表服務(wù)器外部通過修改編寫符合報表定義的XML文件或修改已有的XML文件的方式實現(xiàn)報表模板的自定義[4]。
修改報表格式參數(shù)實現(xiàn)報表格式的自定義,在定義報表時,可以對組成報表的報表項通過對ReportParameter屬性的操作,即對構(gòu)成報表的文本框、表格、矩形、列表、圖像等進行相應(yīng)得參數(shù)設(shè)置,這些參數(shù)可通過表達式設(shè)置,也可以通過查詢數(shù)據(jù)庫中的報表參數(shù)信息進行設(shè)置,從而實現(xiàn)用戶選擇相應(yīng)的報表參數(shù)完成報表格式的自定義。
3.4 報表數(shù)據(jù)處理
在報表設(shè)計器中,通過對數(shù)據(jù)庫查詢設(shè)置報表數(shù)據(jù)集。區(qū)別于.NET中的數(shù)據(jù)集,報表服務(wù)中的數(shù)據(jù)集指一個查詢表達式或一個用于查詢數(shù)據(jù)庫中對象的引用,包括在報表的定義中??梢栽诙x數(shù)據(jù)集的查詢中設(shè)置參數(shù),也可以在存儲過程中定義參數(shù)實現(xiàn)數(shù)據(jù)篩選,參數(shù)項可以由一個靜態(tài)列表或者一個數(shù)據(jù)驅(qū)動的查詢填充,從而實現(xiàn)用戶選擇不同的參數(shù)對報表的各種查詢顯示[5]。根據(jù)SQL Server報表服務(wù)2005提供的數(shù)據(jù)處理接口,通過訪問數(shù)據(jù)庫,報表數(shù)據(jù)采用 DataSet作為數(shù)據(jù)源綁定,在Visual Studio2005中編寫代碼實現(xiàn)數(shù)據(jù)集的動態(tài)綁定。
3.5 報表的顯示輸出
SQL Server報表服務(wù)2005 能夠集成到不同的應(yīng)用程序中,且具有不同的顯示報表的方法:使用URL來訪問報表,使用報表服務(wù)的Web服務(wù)以編程的方式顯示報表,使用ReportViewer控件顯示報表和使用SharePoint顯示報表。本文采用ReportViewer控件顯示報表的方式實現(xiàn)報表的顯示,該顯示方式可以完成在顯示頁面中的瀏覽、打印、保存、查詢、翻頁等功能。由于ReportViewer是客戶端控件,可以使用來自任何數(shù)據(jù)源的數(shù)據(jù),既可在Windows窗體使用,也可在Web窗體使用,故根據(jù)企業(yè)報表顯示的需求,采用在Web 窗體使用ReportViewer實現(xiàn)報表的顯示輸出。首先,將定義好的報表添加到 應(yīng)用程序中,打開Choose Toolbox Items檢查ReportViewer控件,將其添加到引用中。其次,在Web窗體上添加ReportViewer控件和其他輸出頁面進行交互的控件如標(biāo)簽和下拉列表框等。最后,設(shè)置ReportViewer的ReportPath和ReportServerUrl屬性,并編寫相應(yīng)代碼完成報表參數(shù)的傳遞,參數(shù)作為RportParameter對象數(shù)組來管理,報表參數(shù)通過傳遞給ServerReport對象的SetParameters方法的數(shù)組來填充。其部分代碼如下所示:
private void ViewReport()
{
string sReportServerURL = "LocalHost/ReportServer";
string sReportPath ="/Professional SQL Reporting Services/enterprise report ";
Microsoft.Reporting.WinForms.ReportParameter[] Param;
Param[0] =newMicrosoft.Reporting.WinForms.ReportParameter
("OrderDateFrom", this.dtOrderDateFrom.Value.ToString());
Param[1]
=newMicrosoft.Reporting.WinForms.ReportParameter
("OrderDateTo",this.dtOrderDateTo.Value.ToString());
reportViewer1.ProcessingMode =
Microsoft.Reporting.WinForms.ProcessingMode.Remote;
reportViewer1.ServerReport.ReportServerUrl
= new Uri(sReportServerURL);
reportViewer1.ServerReport.ReportPath = sReportPath;
reportViewer1.ServerReport.SetParameters(Param);
reportViewer1.ShowParameterPrompts = false;
reportViewer1.ShowPromptAreaButton = false;
reportViewer1.RefreshReport();
}
4 結(jié)束語
本文提出的在.NET平臺下利用SQL Server2005中的報表服務(wù)實現(xiàn)企業(yè)報表系統(tǒng)的方案,滿足了企業(yè)對報表靈活設(shè)置參數(shù)實現(xiàn)對某些報表項的自定義和易于更新和維護的需求。該方案適用于在.NET 平臺下生成各類企業(yè)報表。由于SQL Server報表服務(wù)和SQL數(shù)據(jù)庫結(jié)合的緊密并且具有很好的擴展性,以及對企業(yè)商業(yè)智能(BI)的支持,可進一步從數(shù)據(jù)處理擴展、交付擴展、顯示擴展和安全擴展等領(lǐng)域延伸企業(yè)報表系統(tǒng)的應(yīng)用。
參考文獻:
[1]張亞平、賀占莊,B/S架構(gòu)下動態(tài)報表的一種實現(xiàn)方式[J],計算機技術(shù)與發(fā)展,2007,17(4):93-95,103.
[2]paul Truly 、謝文亮(譯),SQL Server2005報表服務(wù)高級編程[M],北京:清華大學(xué)出版社,2007.
[3]陳傳波、黃剛、劉清慧,一種基于的自定義報表的設(shè)計與實現(xiàn)[J],計算機工程與科學(xué),2006,28(6):112-114.
[4]菅言彬,基于XML的Web智能報表的研究與實現(xiàn)[D],華北電力大學(xué),2005.
[5]劉福軍、申永軍、劉杰、史維祥,存儲過程和OLE技術(shù)在報表設(shè)計中的應(yīng)用[J],計算機與現(xiàn)代化,2003,(3):73-75,7.
【關(guān)鍵詞】在線考試 JSP SQL Server 信息管理
近年,隨著考試類型的不斷增加以及考試要求的不斷提高,傳統(tǒng)考試已不能完全滿足人們的需求,也顯露出種種弊端。網(wǎng)絡(luò)技術(shù)以及普及到了教學(xué)領(lǐng)域的各個方向,借助JSP及數(shù)據(jù)庫等現(xiàn)代技術(shù),可以使在線考試系統(tǒng)的實現(xiàn)成為可能。因此,許多學(xué)?;虮O(jiān)考機構(gòu)都想利用網(wǎng)絡(luò)在線考試系統(tǒng)來降低管理成本,增加考試效率。網(wǎng)絡(luò)在線考試系統(tǒng)已經(jīng)成為教育技術(shù)發(fā)展與研究的方向。
1 系統(tǒng)分析
1.1 系統(tǒng)需求分析
在線考試系統(tǒng)主要包括系統(tǒng)的注冊、登陸、在線的考試系統(tǒng)、成績查詢系統(tǒng)等。注冊和登陸功能是較為基本的功能,這里不多敘述。在線的考試系統(tǒng),要考慮的主要是怎樣出題、怎樣收集答案、怎樣保存,怎樣判分這些問題。成績查詢系統(tǒng)則要有一個友善的界面,確??忌荚嚨捻樌M行。并且提供對考生成績的統(tǒng)計和查詢等管理功能。應(yīng)具有良好的安全性管理。
1.2 數(shù)據(jù)庫需求分析
由于網(wǎng)絡(luò)在線考試系統(tǒng)的關(guān)鍵在于要確保數(shù)據(jù)的完整和安全,為此,必須有完備和廣泛的數(shù)據(jù)存儲和管理系統(tǒng)作為實現(xiàn)考試系統(tǒng)的數(shù)據(jù)支撐。SQL Server 2005是一種高性能的數(shù)據(jù)庫管理系統(tǒng),在保障系統(tǒng)可靠性和數(shù)據(jù)的安全性方面都比較高校,且整體性能良好,被公認為是卓越的數(shù)據(jù)庫平臺。系統(tǒng)基于SQL Server數(shù)據(jù)庫,結(jié)合系統(tǒng)需求,對要實現(xiàn)的各個功能部分進行分別設(shè)計,并列出了相應(yīng)的的數(shù)據(jù)項:考生信息表、課程信息表、套題信息表、試題信息表和考試試題信息表等。數(shù)據(jù)結(jié)構(gòu)涉及各項目的ID、名稱、時間、課程、分數(shù)等其它信息。
1.3 技術(shù)可行性
技術(shù)實現(xiàn)方面,根據(jù)整個系統(tǒng)的需求和限制條件,從軟件配置和硬件實現(xiàn)方面進行了分析。從技術(shù)的角度研究系統(tǒng)實現(xiàn)的可行性。
軟件配置,網(wǎng)絡(luò)化考試需要的各種軟件環(huán)境都已具備,本系統(tǒng)利用當(dāng)前較流行的JSP技術(shù),并選用SQL Server 2005作為數(shù)據(jù)庫服務(wù)器平臺。該數(shù)據(jù)庫平臺能較好的完成數(shù)據(jù)的編輯、查詢和提取,同時具備絕對的數(shù)據(jù)安全保障機制。因此在大數(shù)據(jù)處理、靈活操作等方面,完全可以為整個系統(tǒng)提供軟件上的支持。
硬件方面,考慮到該在線考試系統(tǒng)對硬件的要求并不需要太高。只要系統(tǒng)硬件具備一定的運算和存儲能力、具有一定的穩(wěn)定性、以及支持網(wǎng)絡(luò)功能就可以。綜上所述,其硬件平全能滿足此系統(tǒng)的需要。
2 數(shù)據(jù)庫設(shè)計
SQL Server數(shù)據(jù)庫應(yīng)用技術(shù)在經(jīng)歷了多年的演變與洗禮后已有很好的發(fā)展。SQL Server 2005作為Windows平臺上成熟的數(shù)據(jù)庫平臺,已經(jīng)經(jīng)過了無數(shù)的數(shù)據(jù)應(yīng)用系統(tǒng)及項目的測試和洗禮,其安全性和卓越的數(shù)據(jù)處理能力有目共睹。
下面對系統(tǒng)中的核心系統(tǒng)的數(shù)據(jù)庫進行設(shè)計,試卷信息的E-R圖如圖1所示。對應(yīng)的部分試題信息表如表1所示。
3 系統(tǒng)設(shè)計
3.1 在線考試模塊設(shè)計
在線考試模塊的主要功能是允許的考生在網(wǎng)站上針對指定的課程進行考試。通常考試系統(tǒng)運行后先要在桌面彈出考試規(guī)則,然后經(jīng)學(xué)生確認閱讀完畢后,進行試題的隨機抽取,從而開始考試并計時,最后到學(xué)生提交試卷后,實現(xiàn)系統(tǒng)的自動評分,并給出最終考試成績。
用戶登陸后選擇在線考試,系統(tǒng)調(diào)用examRule.jsp,顯示考試規(guī)則,用戶需同意相應(yīng)的考試規(guī)則,進入selectLesson.jsp選擇要進行考試的科目,單擊開始考試,系統(tǒng)會進入startExam頁面,開始進行答題!
3.2 考試題目管理模塊設(shè)計
考試題目管理模塊主要包括考試題目列表的查看及修改編輯,以及后期對試題的添加和編輯、刪除等功能。管理員選擇題目管理,進入question.Jsp頁面,選擇對題目進行的增刪改查操作,程序會調(diào)用相應(yīng)的模塊,對信息進行操作。
4 結(jié)論
整個該系統(tǒng)具有試卷管理、試題與科目信息管理,學(xué)生信息管理等功能,已經(jīng)完成了前臺和后臺管理,實現(xiàn)了核心功能。本系統(tǒng)應(yīng)用J2EE平臺技術(shù),采用了當(dāng)前業(yè)界較為流行的Struts的框架結(jié)構(gòu),實現(xiàn)此在線網(wǎng)絡(luò)考試系統(tǒng)。
參考文獻
[1]虞益誠.SQLserver2005數(shù)據(jù)庫應(yīng)用技術(shù)[M].北京:中國鐵道出版社,2009(09).
[2]李尊朝.JAVA語言程序設(shè)計[M].北京:中國鐵道出版社,2011(09).
關(guān)鍵詞:SQL注入 原理 防范
中圖分類號:TP309.3 文獻標(biāo)識碼:A 文章編號:1007-9416(2016)04-0000-00
1 SQL注入簡介
程序員在編寫網(wǎng)頁代碼的時候,常常缺少檢驗用戶輸入數(shù)據(jù)是否合法,這樣使整個網(wǎng)站應(yīng)用存在較高的安全隱患。對于一些非法用戶,想要獲得某些有用數(shù)據(jù)或者破壞數(shù)據(jù),采用的方法如下,用戶可以通過登錄框提交一段數(shù)據(jù)庫查詢代碼,然后根據(jù)網(wǎng)頁返回的結(jié)果,來判斷網(wǎng)站是否有數(shù)據(jù)漏洞,最后通過查詢代碼獲得某些他想得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入[2]。
3 Sql注入的防范
從上面的例子可以看出,如果網(wǎng)頁開發(fā)者不注意過濾轉(zhuǎn)義字符,很有可能被SQL注入式攻擊。那么該如何來防治呢?下面這些建議或許有一定的幫助[3]。
(1)對數(shù)據(jù)進行有效性檢測。比如登錄名文本框內(nèi)只能是字母和數(shù)字,那么就要校驗用戶輸入的數(shù)據(jù)是否合法,比如分號、等號、括號和擴折號都必須要進行程序檢查。另外,還可以限制輸入的數(shù)據(jù)長度,如果文本框的輸入長度限制在十個字符以內(nèi),那么就大大減少了有害代碼插入的幾率。
(2)將數(shù)據(jù)進行封裝。在編程中使用session等語句將用戶提交的信息封裝起來,不要用cookie,這樣避免非法用戶從cookie中獲取重要信息。
(3)過濾掉敏感信息。不要在程序代碼中出現(xiàn)用戶名稱和密碼,進行查詢的數(shù)據(jù)應(yīng)從文本框中獲取,提高網(wǎng)站的安全性。
(4)單引號應(yīng)過濾掉[4]。就像本文舉的實例一樣,就是因為沒有過濾掉用戶的單引號,才讓非法用戶繞過了密碼驗證,實現(xiàn)了SQL注入攻擊。所以,過濾掉用戶輸入的單引號,約束了他們的權(quán)限,大大避免了遭受SQL注入攻擊。
(5)編程人員應(yīng)指定網(wǎng)站錯誤返回頁面。非法用戶在提交攻擊代碼后,會根據(jù)頁面的提示信息來獲取相關(guān)服務(wù)器應(yīng)用信息,比如開發(fā)者使用的數(shù)據(jù)庫類型,來進行下一次的攻擊,因此,編程人員應(yīng)該指定一個錯誤頁面,不包含任何有用的信息。
(6)對信息進行加密。把數(shù)據(jù)庫中的重要的信息進行加密處理,比如存儲口令信息的表和用戶名稱的表,都可以以密文形式保存,這樣大大提高了數(shù)據(jù)的安全級別。
(7)對數(shù)據(jù)庫中的權(quán)限進行分離。在數(shù)據(jù)庫中,對用戶的權(quán)限進行劃分,那么,用戶只能針對數(shù)據(jù)庫中的授權(quán)數(shù)據(jù)進行查詢、刪除等操作,防止非法用戶對數(shù)據(jù)庫進行訪問,提高了數(shù)據(jù)的安全性。
(8)使用監(jiān)視工具。對數(shù)據(jù)庫使用監(jiān)視工具是對付SQL注入攻擊的強大工具,當(dāng)發(fā)生不太正常的數(shù)據(jù)訪問問題時,數(shù)據(jù)庫管理員會收到警告,從而會減輕大規(guī)模的SQL注入攻擊的風(fēng)險。
(9)使用專業(yè)的漏洞掃描工具??梢允褂脤I(yè)的漏洞掃描工具,專門用來查找網(wǎng)站中的SQL注入漏洞,降低被SQL注入攻擊的幾率。
4結(jié)語
sql注入在網(wǎng)上非常普遍,許多網(wǎng)站都存在這個漏洞。本文對SQL注入攻擊的方法、原理以及攻擊進行了研究和總結(jié),并給出了常用的一些SQL注入攻擊防范方法,盡可能降低SQL注入所帶來的網(wǎng)絡(luò)安全風(fēng)險。
參考文獻
[1]鄒健.中文版 SQL Server2000開發(fā)與管理應(yīng)用實例.2005.
[2]蕭雍.SQL注入攻擊常用函數(shù)與命令.黑客防線,2004.
[3]張勇,李力,薛倩.Web環(huán)境下SQL注入攻擊的檢測與防御.現(xiàn)代電子技術(shù),2004.
[4]徐陋,姚國祥.SQL注入攻擊全面預(yù)防方法及其應(yīng)用.微計算機信息,2006 3(3):18-20.