李竹林
(1.延安大學 計算機學院,陜西 延安 716000;2.延安大學 軟件研究與開發中心,陜西 延安 716000)
查詢功能是信息管理系統中最基本的功能之一,是使用用戶最多、點擊率最頻繁的模塊[1-3]。查詢功能主要實現根據用戶的選擇,實現組合條件查詢。根據企業信息管理系統中數據查詢特點,一次查詢的數據不僅包含自己部門的基礎數據,還往往要查詢部門間相關數據。因此,如何將部門內或部門間的數據靈活地組織起來以實現數據靈活、動態的查詢是非常重要的。為了方便用戶查詢數據,文中設計并實現了基于多表的動態查詢模塊,使得用戶可以靈活組織查詢數據項,設置查詢條件,甚至可以編輯查詢條件。該模塊應用到某采油廠的生產管理系統中并投入使用,應用結果表明,查詢靈活度高、速度快,用戶的滿意度調查達到98%以上。
動態查詢是為用戶提供的一種靈活、方便的查詢方式,是指用戶可以自主篩選查詢字段項,自己設計組合查詢條件與排序條件,然后根據設計的條件與排序方式,查詢出滿足條件的查詢結果。下面以某采油廠的生產管理系統為應用背景,介紹該動態方法的設計過程與實現方法。
為了提高用戶查詢的速度與效率,為數據的動態查詢建立了多個視圖,部分視圖與查詢數據項的對應關系如表1所示。

表1 視圖與查詢數據的對應關系Tab.1 The corresponding relationship of views and query data
為了提高動態查詢模塊的通用性,設計了通用動態查詢用戶控件,設計方法如下。
1.2.1 查詢表字段動態獲取
為了提高查詢速度、擴大查詢數據范圍,設計了基于視圖的動態數據查詢,實現一次查詢數據庫中多個表中數據的動態查詢方法。由于SQL Server 2005數據庫系統具有自描述性,不僅包含數據庫內容、數據庫結構、約束的完整定義和描述,而且還可以動態管理系統視圖;所有動態管理視圖和函數都存在于 sys架構中,且表的元數據中只有一個具有名稱和id的項[4-6]。因此,可以利用系統視圖獲取動態查詢的表與相應的列名。下面以油田單井基礎信息為例,建立單井基礎信息視圖v_djjc,并利用系統視圖查詢方法獲取動態查詢字段名。基本語句:select sys.columns.name from sys.columns,sys.objects, sys.types where …… , 其 中 ,sys.columns, sys.objects,sys.types的含義如表2所示。

表2 相關系統視圖含義Tab.2 The meaning of the system views
單井基礎信息視圖v_djjc包含了16個相關聯的表和字典,例如單井基礎信息表(t_djjc)、單井安裝信息表(t_djaz)、區隊字典(t_yh)、單位字典(d_dw)、井別字典(d_jb)、井位字典(d_jw)等,然后用表3所示的SQL語句獲取視圖v_djjc所包含的所有字段名,其中的"sys.columns.name<>'狀態'and sys.columns.name<>'單位代碼'"是過濾掉不需要用戶選擇查詢的字段;vname="v_djjc"。

表3 獲取動態查詢字段名的SQL語句Tab.3 SQL to obtain dynamic query fields name
1.2.2 控件屬性設置
設計與實現通用動態查詢的控件屬性設置如表4所示。
1.2.3 通用動態查詢控件的設計流程
在查詢控件中設計了多個方法,如多表字段名的動態獲取、組合查詢條件字符串生成、排序條件字符串的生成、最終動態查詢SQL語句的生成,以及查詢功能等。這些方法均封裝在控件中,并提供了與查詢[7]系統實現的服務接口。用戶控件的設計流程如圖1所示。
動態查詢模塊的功能實現同樣遵循系統的唯一入口即登錄窗口,根據用戶的權限決定用戶是否能登錄成功,若成功登錄后,則攜帶著使用系統的重要參數,如用戶姓名、用戶所在單位等進入系統;該用戶有無查詢功能是依據系統管理員對業務的分配決定的,若有,則執行動態查詢功能,詳細流程如圖2所示。

圖1 動態查詢控件的設計流程Fig.1 The design process of dynamic query control
將設計的該模塊應用于采油廠原油生產管理系統中,受到用戶極大的歡迎。查詢頁面如圖3所示。
應用結果表明,該查詢模塊具有如下的優點:
1)速度快、效率高 基于視圖的查詢可大大提高基于多用戶頻繁使用的查詢模塊速度;
2)安全性好 登錄進入查詢系統之后,只能查詢系統管理員已分配給自己的動態查詢業務。而且用戶登錄時采用的是實名制,在用戶日志中有用戶每一次的使用系統記錄;
3)靈活且功能強大 用戶可以自己定制查詢字段,也可以自己設計數據查詢的組合條件以及數據排序的字段、順序,因此動態查詢是一種完全根據用戶需要的查詢方式。而且,用戶可以自己編寫或修改組合查詢條件以達到查詢目的;
4)查詢信息量大 本系統的動態查詢字段不是建立在傳統的單表,而是首先根據數據的重要性與相關性建立了31個視圖,提供了豐富的信息,使得用戶在每次查詢過程中,可以查詢到相關聯的數據;
5)可維護性強 用戶要查詢的字段項全部是通過所建立的視圖獲取的,因此,若用戶的查詢數據字段有所變化,只需修改視圖而不需要直接修改代碼;另外,設計實現了通用的動態查詢控件后,大大簡化了動態查詢模塊的維護;
6)界面友好、易操作 動態查詢頁面設計友好,操作簡單。

圖2 動態查詢實現流程圖Fig.2 The realization flow chart of dynamic query

圖3 單井壓裂動態查詢頁面Fig.3 The dynamic query page of single well
傳統的靜態查詢方式具有查詢數據項、查詢條件不能動態設置的缺點,使其不能滿足用戶靈活性要求。本文根據企業信息管理的需要,設計了基于多表的動態查詢模塊,并將其應用于原油生產管理系統中,取得了很好的查詢結果。事實上,該方法也可用任意信息管理系統中的查詢子系統中。
[1]李成,王衛東.重點工程信息和質量驗收標準移動查詢系統的研發[J].鐵路計算機應用,2011,20(10):5-7.
LI Cheng,WANG Wei-dong.Research and development on mobile query system for key project information and quality inspection standard[J].Railway Computer Application,2011,20(10):5-7.
[2]閆秀婧,王彩霞.教育研究網絡管理信息系統研建[J].甘肅林業職業技術學院學報,2006(11):11-15.
YAN Xiu-jing,WANG Cai-xia.The education research management information system construction[J].Journal of Gansu Forestry Technological College,2006(11):11-15.
[3]尚東挺,王緒宛,王亞洲.基于大型數據庫的醫院信息系統設計與實現[J].電腦知識與技術,2011,7(33):8123-8124.
SHANG Dong-ting,WANG Xu-wan,WANG Ya-zhou.The design and implementation of the hospital management system based on large-scale database[J].Computer Knowledge and Technology,2011,7(33):8123-8124.
[4]Pressman R S.Software Engineering:A Practitioner’s Approach[M].Sixth Edition McGraw-Hill Science/Engineering/Math,2004.
[5]劉婕,張琳,溫才燚,等.ASP.NET 2.0+SQL Server動態網站開發從基礎到實踐[M].北京:電子工業出版社,2007.
[6]劉軍,陽小華,楊星.基于B/S模式的通用型組合查詢組件的設計[J].微計算機信息,2006,22(2):256-258.
LIU Jun,YANG Xiao-hua,YANG Xing.Design of a component of general combined query based browse/server mode[J].Microcomputer Information,2006,22(2):256-258.
[7]韓雙旺.基于SVG的矢量WebGIS地圖高級查詢功能的實現[J].工業儀表與自動化裝置,2011(4):68-72.
HAN Shuang-wang.The realization of advanced search functions on SVG-based vector WebGIS map[J].Industrial Instrumentation&Automation,2011(4):68-72.